$ _SERVER ['document_root']返回/ htdocs not / public_html

时间:2012-10-07 16:33:55

标签: php hosting

我正在寻找切换到新主机,他们提供这个漂亮的小“临时网址”来测试你的文件,然后再切换。一切都很好,花花公子。所以我复制了我的所有文件。在每个页面的顶部,我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');

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

2 个答案:

答案 0 :(得分:4)

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

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

$htdocs = str_replace(basename(__FILE__), __FILE__, '');
define('ROOT_FOLDER', $htdocs);
require_once(ROOT_FOLDER . '/includes/head.php');

答案 1 :(得分:0)

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