我知道这与路径不太正确有关,但令我感到困惑。我可以在浏览器中完全没有任何问题地运行我的脚本,但是当我从shell执行完全相同的位置时,spl_autoload会抱怨并死掉:
致命错误:spl_autoload():类db 无法载入......
我正在使用根目录中的绝对路径,回显到屏幕并将其粘贴到shell中并验证它是好的。请...我错过了什么?
答案 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,否则你将失去默认值)
一旦那个排序,只需设置你的自动加载器假设对根目录,你应该没事,因为它比依赖相对路径更具体,可以根据工作目录改变。