当脚本从命令行运行时,sp​​l_autoload失败

时间:2010-01-02 15:03:55

标签: php

我知道这与路径不太正确有关,但令我感到困惑。我可以在浏览器中完全没有任何问题地运行我的脚本,但是当我从shell执行完全相同的位置时,spl_autoload会抱怨并死掉:

  

致命错误:spl_autoload():类db   无法载入......

我正在使用根目录中的绝对路径,回显到屏幕并将其粘贴到shell中并验证它是好的。请...我错过了什么?

2 个答案:

答案 0 :(得分:2)

尝试使用__DIR__常量来查找文件,CLI PHP不使用相同的工作目录。

使用类似的东西:

function __autoload($class)
{
    require_once(dirname(__FILE__) . '/path/to/libraries/' . $class . '.php');
}

答案 1 :(得分:0)

您通常可以使用以下内容获取项目的根目录:

// The file that defines this is 2 directories below root, hence the ../ changes.
define('PATH_ROOT', realpath(dirname(__FILE__) . '/../../'));

获得根路径后,可以使用set_include_path修改包含路径。 (记住在设置时包含get_include_path,否则你将失去默认值)

一旦那个排序,只需设置你的自动加载器假设对根目录,你应该没事,因为它比依赖相对路径更具体,可以根据工作目录改变。