2

我已经尝试了两个:

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 _

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

in script 版本最初是

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

因此 .:.: 来自现有路径:

ini_get('include_path')

无论如何,我尝试将其删除,但问题仍然存在。

4

3 回答 3

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 路径设置为将保留)

于 2008-09-03T19:18:17.260 回答
3

原来这个问题与 5.2.5 中的一个 PHP 错误有关

为 include_path 设置“admin_flag”会导致某些请求中的包含路径为空,并且 Plesk 在默认配置中为某些内容设置了 admin_flag。PHP 的更新解决了这个问题。

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

于 2010-02-09T09:32:29.833 回答
0

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

于 2008-09-03T15:05:31.250 回答