在没有 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 上运行?
我可以在 .htaccess
或 php.ini
中输入什么来定义 $DOCUMENT_ROOT
吗?
或者是否有适用于 $_SERVER["DOCUMENT_ROOT"]
的不同语法?
或者有更好的解决方案吗?
我的主要目标是让它尽快恢复正常(这是一个公司网站,由于 Hostgator 出于安全原因取消了 PHP 5 支持,它已关闭),而不会造成更严重的问题。
我找到了解决办法。很丑,不过好像还行。
我用暴力替换了:
"$DOCUMENT_ROOT
与:
$_SERVER['DOCUMENT_ROOT']."
...整个网站。
它很丑陋,但它确实有效。欢迎提出改进建议。
我有一个网站(手工编码 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 上运行?
我可以在 .htaccess
或 php.ini
中输入什么来定义 $DOCUMENT_ROOT
吗?
或者是否有适用于 $_SERVER["DOCUMENT_ROOT"]
的不同语法?
或者有更好的解决方案吗?
我的主要目标是让它尽快恢复正常(这是一个公司网站,由于 Hostgator 出于安全原因取消了 PHP 5 支持,它已关闭),而不会造成更严重的问题。
我找到了解决办法。很丑,不过好像还行。
我用暴力替换了:
"$DOCUMENT_ROOT
与:
$_SERVER['DOCUMENT_ROOT']."
...整个网站。
它很丑陋,但它确实有效。欢迎提出改进建议。