PHP中的设置包含路径间歇性失败

时间:2008-09-03 14:47:35

标签: php include-path

我试过了两个:

ini_set('include_path', '.:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes');

还有:

php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes"
<。>在.htaccess文件中。

这两种方法实际上可以正常工作,但只能间歇性地进行。也就是说,它们可以在大约37页的请求中正常工作,然后大约42页请求失败,导致require()调用导致致命错误,从而有效地使站点崩溃。

我甚至不确定从哪里开始尝试找出发生的事情!


@ cnote

  

看起来您复制了包含路径中的当前目录。尝试从字符串中删除其中一个“。:”。

脚本版本最初是

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');

因此。:。:来自现有的路径:

ini_get('include_path')

无论如何,我尝试删除它,问题依然存在。

3 个答案:

答案 0 :(得分:4)

你试过set_include_path()吗?作为一个好处,它在失败时返回false,允许您至少捕获出现并生成一些有意义的调试数据。 此外,您应该使用常量PATH_SEPARATOR,因为它在windows / * nix之间不同。

作为一个具体的例子:

set_include_path('.' . PATH_SEPARATOR . './app/lib' . PATH_SEPARATOR . get_include_path());

(末尾的get_include_path()意味着你的ini / htaccess路径设置为将保留的任何内容)

答案 1 :(得分:3)

事实证明这个问题与5.2.5中的PHP错误相关

为include_path设置“admin_flag”会导致某些请求中的include路径为空,而P​​lesk会在默认配置中为某些内容设置admin_flag。 PHP的更新解决了这个问题。

http://bugs.php.net/bug.php?id=43677

答案 2 :(得分:0)

看起来您复制了包含路径中的当前目录。尝试从字符串中删除其中一个“。:”。