作为cronjob运行时,PHP自动加载问题

| 我具有以下文件结构: cron.php /includes/functions.php /classes/ClassName.php corn.php包含functions.php调用new ClassName()。而且functions.php包含原始的自动加载器:
 function __autoload($class_name) {
   require_once(\'classes/\'.$class_name.\'.php\');
 }
当从浏览器调用cron.php时,它可以正常工作。但是,如果从shell运行,则会出现致命错误“没有此类文件或目录”。我试图将\'classes /\'.$ class_name。\'。php \'换成realpath()函数,但无济于事。请指教。     
已邀请:
您可以使用ѭ1来获取自动加载PHP脚本的\“ absolute \”当前目录。 您可以执行类似的操作(假设自动加载脚本位于项目的子目录中):
function __autoload($class_name) {
  require_once(dirname(__FILE__).\'/../classes/\'.$class_name.\'.php\');
}
看到: http://php.net/manual/zh/language.constants.predefined.php http://fr.php.net/manual/en/function.dirname.php     
 function __autoload($class_name) {
   require_once(dirname(__file__) . \'/classes/\'.$class_name.\'.php\');
 }
    
您是如何安排工作的?如果文件是/path/to/cron.php,请尝试以下操作: \“ cd / path / to && php cron.php \”,您现在可能会执行类似\“ php /path/to/cron.php \”的操作,而$ PWD不是/ path / to /,因此类不是发现     
由于您使用的是相对路径,因此从浏览器和CLI调用时它所在的PHP目录是不同的。 使用此功能可以更改目录以匹配浏览器目录。 更新:从建议中建议代码。
chdir(dirname(__FILENAME__));
    

要回复问题请先登录注册