PHP突然停止搜索当前目录中的文件
所以我今天遇到了一件很奇怪的事 我已经将PHP APC更新为最新版本,并重新启动了apache。然后突然,apache中的所有脚本都开始抱怨无法找到所需的文件 我通常会:PHP突然停止搜索当前目录中的文件,php,apc,require-once,Php,Apc,Require Once,所以我今天遇到了一件很奇怪的事 我已经将PHP APC更新为最新版本,并重新启动了apache。然后突然,apache中的所有脚本都开始抱怨无法找到所需的文件 我通常会: 需要一次'Abstract.php' 考虑到Abstract.php与其他脚本位于同一目录中 这些错误包括: PHP警告: require_once(Abstract.php)[function.require once]: 无法打开流:没有此类文件或 第411行data.php中的目录 致命错误:require_once()
需要一次'Abstract.php'
考虑到Abstract.php与其他脚本位于同一目录中
这些错误包括:
PHP警告:
require_once(Abstract.php)[function.require once]:
无法打开流:没有此类文件或
第411行data.php中的目录
致命错误:require_once()[function.require]:
无法打开所需的“Abstract.php”
(include_path='/var/www/application/。/library:/var/www/library:.:/usr/share/php:/usr/share/pear')
在data.php的第411行
如您所见,当前目录(.)包含在执行的include_路径中。为什么会这样?以前有人见过吗?好的,
表示PHP二进制文件所在的目录require*
和include*
函数考虑了当前工作目录,可以通过chdir()修改当前工作目录
正如所建议的,尝试使用\uuuu DIR\uuu
常量:
require_once __DIR__ . '/Abstract.php';
如果这也失败了,那就意味着其他地方存在错误配置。如果工作正常,可能意味着当前正在执行的PHP线程的工作目录设置为不同的,您需要更改当前工作目录或修改require
语句以使用绝对路径
另外,您是否考虑过使用自动加载回调?这样,您就有了一个用于搜索类的单一入口点。AFAIK,
表示PHP二进制文件所在的目录require*
和include*
函数考虑了当前工作目录,可以通过chdir()修改当前工作目录
正如所建议的,尝试使用\uuuu DIR\uuu
常量:
require_once __DIR__ . '/Abstract.php';
如果这也失败了,那就意味着其他地方存在错误配置。如果工作正常,可能意味着当前正在执行的PHP线程的工作目录设置为不同的,您需要更改当前工作目录或修改require
语句以使用绝对路径
另外,您是否考虑过使用自动加载回调?这样你就有了一个搜索类的单一切入点。好的,我最终找到了答案,尽管我应该分享一下,以防其他人和我一样遇到麻烦
我曾经有APC3.0.x,并升级到3.1.8。3.1.8版本的APC似乎有一个bug,它破坏了PHP的include/requires
请参见此处的相对链接:
谢谢大家的快速反馈:)好的,我最终找到了答案,不过我应该和大家分享一下,以防其他人和我一样遇到麻烦
我曾经有APC3.0.x,并升级到3.1.8。3.1.8版本的APC似乎有一个bug,它破坏了PHP的include/requires
请参见此处的相对链接:
感谢大家的快速反馈:)尝试使用strace点击apache进程,看看它到底做了什么(grep表示“open”)。apache用户尝试访问data.php文件时的“读取”权限是否正确?如果需要\u once dirname(\u文件\u),会发生什么情况/Abstract.php'代码>?(附带说明:当前目录应始终是包含路径的一部分)这是APC错误。。。尝试使用strace点击apache进程,看看它到底做了什么(grep表示“open”)。apache用户尝试访问data.php文件时的“读取”权限是否正确?如果需要\u once dirname(\uuuu file\uuu),会发生什么情况/Abstract.php'代码>?(附带说明:当前目录应始终是包含路径的一部分)这是APC错误。。。