我已经尝试过:

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() 调用导致致命错误,从而导致站点崩溃。

我什至不知道从哪里开始尝试找出发生了什么事!


@注释

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

脚本版本最初是

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

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

ini_get('include_path')

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

有帮助吗?

解决方案

事实证明该问题与 5.2.5 中的 PHP 错误有关

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

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

其他提示

你有没有尝试过 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 路径设置将保留)

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top