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

时间:2011-05-12 08:41:09

标签: php apc require-once

所以我今天遇到了一些非常奇怪的事情。

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

我通常会:

require_once 'Abstract.php'

考虑到Abstract.php与其他脚本位于同一目录中。

错误:

  

PHP警告:   require_once(Abstract.php)[function.require-once]:   无法打开流:没有这样的文件或   第411行PHP中的data.php中的目录   致命错误:require_once()[function.require]:   无法打开所需的'Abstract.php'   (include_path中= '/无功/网络/应用/../库:/无功/网络/库::在/ usr /共享/ PHP:在/ usr /共享/梨')   在第411行的data.php中

如您所见,当前目录(。)包含在执行的include_path中。为什么会这样?有没有人见过它?

2 个答案:

答案 0 :(得分:1)

AFAIK,.表示PHP二进制文件所在的目录。 require*include*函数会考虑当前的工作目录,可以通过chdir()进行修改。

正如cwallenpoole所建议的那样,尝试使用__DIR__常量:

require_once __DIR__ . '/Abstract.php';

如果这也失败了,这意味着其他地方的配置错误。如果它工作,它可能意味着当前正在执行的PHP线程将其工作目录设置为不同,您需要更改当前工作目录或修改require语句以使用绝对路径。

另外,您是否考虑过使用自动加载回调?这样,您就可以通过单一的入口点来搜索课程。

答案 1 :(得分:0)

好的,我最终想出来了,虽然我应该分享以防其他人遇到和我一样的麻烦。

我曾经拥有APC 3.0.x并升级到3.1.8。因为3.1.8上的APC似乎有一个破坏包含/要求PHP的错误。

请参阅此处的相关链接:http://pecl.php.net/bugs/bug.php?id=22687

感谢大家的快速反馈:)