题
我已经尝试过:
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 的更新解决了这个问题。
其他提示
你有没有尝试过 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 路径设置将保留)
看起来您在包含路径中复制了当前目录。尝试从字符串中删除“.:”之一。
不隶属于 StackOverflow