【发布时间】:2013-09-28 19:12:22
【问题描述】:
我正在尝试在新服务器上建立一个我不是原始所有者的站点 - 在 Apache2 中,文档根目录已设置为 /var/www/html,即 index.php 所在的位置我想成为默认的“主页”所在的位置。
在 www 的其他目录中有许多文件。例如,/common/cachelite/Lite.php 也可以在 /var/www 中找到。
index.php 中的 php 使用 require_once 引用它,如下所示:
error_reporting(E_ALL);
ini_set('Display_errors','On');
require_once('../common/cachelite/Lite.php');
但抛出以下错误,我从我的 Apache2 error.log 中获取:
PHP Fatal error: require_once(): Failed opening required '../common/cachelite/Lite.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/index.php on line 4
文件本身肯定存在,所以有人可以帮我解释一下这个问题吗?怎么回事?
【问题讨论】:
-
require/include不受网络服务器的文档根目录的约束。这是一个只存在于网络服务器中的概念。 PHP 只能看到文件系统,并且可以访问其包含的用户 ID 可以访问的任何文件/目录。 -
我也这么想,但我似乎不需要这个文件这一事实让我质疑自己的知识......
-
将自己放入一个打开到与您的 php 脚本相同的目录的 shell 中。然后找出
../whatever路径应该是什么,以便从脚本所在的位置到包含的文件所在的位置。这将是您在 PHP 中需要的路径。 -
是的,但那是..(上一个目录),然后进入/common/cachelite/Lite.php,所以'../common/cachelite/Lite.php',这正是我所拥有的.由于某种原因它不起作用...我可以通过执行 nano ../common/cachelite/Lite.php 或 cd 使用该路径从 index.php 目录中导入文件...我是否遗漏了一些明显的东西?
-
说打开失败,而不是“没有这样的文件”,所以可能是权限问题。确保您运行脚本的帐户具有对文件夹和实际文件的写入。
标签: php apache pear require-once