一尘不染

PHP致命错误无法打开所需的文件

php

我从Apache得到以下错误

[2011年3月19日23:10:50周六] [警告]
mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需的’/common/configs/config_templates.inc.php’(include_path
=’ 。:/ usr / share / pear:/ usr / share /
php’)在第158行的/home/viapi​​cs1/public_html/common/configs/config.inc.php中

我绝对不是Apache的专家,但是文件config.inc.php和config_templates.inc.php在那里。我还尝试导航到放在common
/ configs
/中的test.html页面,因此我假设没有权限问题。我还在config_templates.inc.php上设置了权限,以赋予所有人读取,写入和执行权限。不知道此时该怎么办,我检查是否有一个/
usr / share / php目录,但我发现那里没有,但是当我执行yum install php时,它说它具有最新版本。有想法吗?


阅读 267

收藏
2020-05-26

共1个答案

一尘不染

这实际上不是与Apache相关的问题。甚至没有与PHP相关的代码。要了解此错误,您必须将 虚拟服务器上 的路径与 文件系统中 的路径区分开。

require运算符可处理文件。但是没有

                          /common/configs/config_templates.inc.php

文件在服务器上,而是

/home/viapics1/public_html/common/configs/config_templates.inc.php

/home/viapics1/public_html

部分称为 文档根 ,将虚拟世界与真实世界连接起来。幸运的是,Web服务器通常在与PHP共享的配置变量中具有文档根目录。因此,如果您将代码更改为类似

require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';

它可以在任何目录中的任何文件中工作。

更新:最终,我写了一篇文章,解释了文件系统和Web服务器上相对路径和绝对路径之间区别,它详细解释了此问题,并包含一些实用的解决方案。

不幸的是,当您从命令行运行脚本时,这种方便的变量不存在。在这种情况下,将采取一种称为“单个入口点”的技术。您也可以参考上面的文章以了解详细信息。

2020-05-26