1

我有一个网站(手工编码的 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"); ?>

两者都不起作用 - 我得到 ERROR 500。

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

但第二个也不起作用(也是错误 500)。

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

有什么我可以放入.htaccessphp.ini定义的$DOCUMENT_ROOT吗?

或者是否有不同的语法可以使用$_SERVER["DOCUMENT_ROOT"]

还是有更好的解决方案?

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

4

1 回答 1

0

我找到了解决方案。这很丑陋,但它似乎工作。

我做了一个蛮力替换:

"$DOCUMENT_ROOT

和:

$_SERVER['DOCUMENT_ROOT']."

...在整个网站上。

这很丑陋,但它正在工作。欢迎提出改进建议。

于 2021-09-02T17:48:20.290 回答