php 包含路径错误:相同的代码在 Ubuntu 默认 Apache 和 php 配置上运行,但在 CentOS 上运行不上

php 包含路径错误:相同的代码在 Ubuntu 默认 Apache 和 php 配置上运行,但在 CentOS 上运行不上

因此,相同的代码在我的 Ubuntu 服务器上可以运行,但是当我将其上传到运行 CentOS 的专用托管服务器时,它似乎添加了一个额外的前缀,.:/usr/share/pear:/usr/share/php: 我尝试将其设置includepath为不同的内容,但就是不起作用。该文件位于名为 language 的目录中,与包含它的文件位于同一文件夹中,我正在使用:

include dirname(__FILE__).DIRECTORY_SEPARATOR."language".DIRECTORY_SEPARATOR."storage.inc";
include dirname(__FILE__)."/language/language.php";
include "language/language.php";

以及许多其他组合,但我无法找到该文件。我一直收到错误消息:

Fatal error: require_once() [function.require]: Failed opening required '/home/neo/public_html/migration/include/class/core/storage.inc' (include_path='.:/usr/share/pear:/usr/share/php:/home/neo/public_html/migration') in /home/neo/public_html/migration/include/class/core/class_lang.inc on line 153

答案1

每当我在 CentOS 上遇到奇怪的问题时,我首先要检查的是 selinux。这是一个默认启用的安全系统,它可以阻止程序访问任何未获得明确权限的文件。

您可以查看

/var/log/secure or maybe /var/log/audit/audit.log

拒绝消息,或者您可以通过暂时关闭 selinux 进行测试

echo 0 >/selinux/enforce

然后测试 - 但稍后再将其重新打开

echo 1 >/selinux/enforce

并研究如何调整它以使其正常工作。

相关内容