这是一个好主意吗?
require_once($_SERVER['DOCUMENT_ROOT'].'/include.PHP');
如果在同一台服务器上有两个虚拟主机,一个用于实时,另一个用于开发,具有不同的Apache DocumentRoot,则可避免在包含源未知时包含绝对路径,并且可能位于任何目录中.
(注意:下一节中的文件路径是相对于Web根目录,实际上就像/var/www/app/core/init.PHP,其中/ var / www / app是Web根目录)
例如:我有一个/core/init.PHP,它通过网站上的地方使用相对路径(/file.PHP,/dir/file.PHP或/dir/dir/file.PHP)进行调用.
这个init.PHP然后包括几个功能页面,在资金目录中,/ core的子目录(如/core/func/userfunctions.PHP中所示).
因此,在init.PHP中,我可以使用$_SERVER方法,因为如果我使用相对路径,并尝试从/dir/file.PHP这样的页面调用函数,它将会中断.
我看不到任何问题,但一般可能会出错?
我看到没有设置$_SERVER [‘DOCUMENT_ROOT’]的情况,或者不是你所期望的(即在CLI或旧的IIS中没有设置,或者在某些CGI设置中无效).
因此,您可以使用dirname(__ FILE__)来获取调用该行的脚本的路径.然后可以从中引用相对路径.
include dirname(__FILE__) . '/../../other/file.PHP';
如果DOCUMENT_ROOT不可用,以下是一个合适的替代品:
substr($_SERVER['SCRIPT_FILENAME'],-strlen($_SERVER['SCRIPT_NAME']));
原文地址:https://www.jb51.cc/php/139666.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。