Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP突然停止搜索当前目录中的文件_Php_Apc_Require Once - Fatal编程技术网

PHP突然停止搜索当前目录中的文件

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()

所以我今天遇到了一件很奇怪的事

我已经将PHP APC更新为最新版本,并重新启动了apache。然后突然,apache中的所有脚本都开始抱怨无法找到所需的文件

我通常会:

需要一次'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错误。。。