4

我正在寻找切换到一个新主机,他们提供了这个漂亮的小“临时 url”来在你切换之前测试你的文件。一切都很好,花花公子。所以我复制了我所有的文件。在每一页的顶部,我都有require来自服务器的另一个文件存储在public_html/includes/head.php. 现在无论出于何种原因, $_SERVER['document_root'] var 正在返回 /public_html/htdocs/includes/head.php (服务器上不存在)而不是 /public_html/includes/head.php (确实存在) . 产生的错误如下:

Warning: require_once(/home/secure31/public_html/htdocs/includes/head.php) 
[function.require-once]: failed to open stream: Permission denied in 
/home/stephe80/public_html/index.php on line 6

有罪代码:

require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/head.php');

我倾向于认为这是与他们的临时 url 设置相关的错误,但我不想通过我的 DNS 传输并发现我的所有文件都已损坏。我可以将它们更改为绝对路径,但我很好奇我是否遗漏了什么。任何见解将不胜感激。谢谢!

4

2 回答 2

4

我建议使用__FILE__常量并从那里计算出你的 htdocs 文件夹。它比依赖 $_SERVER 超全局更可靠,因为这实际上因服务器而异。

示例(您将在根文件夹中的 index.php 中调用):

$htdocs = str_replace(basename(__FILE__), __FILE__, '');
define('ROOT_FOLDER', $htdocs);
require_once(ROOT_FOLDER . '/includes/head.php');
于 2012-10-07T17:02:50.617 回答
0

为了将来参考(如果有人有类似的问题),事实证明问题出在他们的测试服务器上。我用我的代码原样启动它(我知道有风险),结果一切都很好。

于 2012-10-08T13:07:23.163 回答