在没有 register_globals 的情况下替代 $DOCUMENT_ROOT?

Substitute for $DOCUMENT_ROOT without register_globals?

我有一个网站(手工编码 HTML/CSS/PHP),有数百页,每个页面都多次引用 $DOCUMENT_ROOT - 例如:

<?php include("$DOCUMENT_ROOT/home/index.html"); ?>

在 PHP 5 下工作正常,但 register_globals 已被弃用并从 PHP 7 中删除,因此它不再工作。

我不想硬编码文件路径,因为我的测试服务器和实时服务器使用不同的文件路径 - 例如:

测试服务器:/home4/testing/public_html/home/index.html

实时服务器:/home4/live/public_html/home/index.html

(另外,就一般原则而言,不必要地对路径进行硬编码似乎不是一个好主意。)

我认为,从句法上讲,$_SERVER['DOCUMENT_ROOT']$_SERVER["DOCUMENT_ROOT"] 可以替代 $DOCUMENT_ROOT

我在我的来源上尝试了一个简单的搜索和替换 HTML:

<?php include("$_SERVER["DOCUMENT_ROOT"]/home/index.html"); ?>

<?php include("$_SERVER['DOCUMENT_ROOT']/home/index.html"); ?>

两者都不起作用 - 我收到错误 500。

第一个很明显有字符串引用问题(太多 " 在错误的地方)。

但是第二个也不行(也是ERROR 500)。

如何让我的网站在 PHP 7 上运行?

我可以在 .htaccessphp.ini 中输入什么来定义 $DOCUMENT_ROOT 吗?

或者是否有适用于 $_SERVER["DOCUMENT_ROOT"] 的不同语法?

或者有更好的解决方案吗?

我的主要目标是让它尽快恢复正常(这是一个公司网站,由于 Hostgator 出于安全原因取消了 PHP 5 支持,它已关闭),而不会造成更严重的问题。

我找到了解决办法。很丑,不过好像还行。

我用暴力替换了:

"$DOCUMENT_ROOT

与:

$_SERVER['DOCUMENT_ROOT']."

...整个网站。

它很丑陋,但它确实有效。欢迎提出改进建议。