我想使用.htaccess
自动预置一个 PHP 脚本。我知道有一个指令要这样做。我在 Web 根目录中的.htaccess
文件中有以下内容:
php_value auto_prepend_file "./init.php"
init.php
文件的内容包括:
<?php
$_SERVER['WEB_ROOT']=
str_replace($_SERVER['SCRIPT_NAME'],'',
$_SERVER['SCRIPT_FILENAME']);
这将计算 Web 根目录的路径并将其放入超全局。这是我能想到的唯一实用的方法,可以跟踪包含之类的内容的网络根目录。
问题是这仅适用于 Web 根目录中的 PHP 脚本。如果脚本本身位于子目录中,则会出现错误,因为init.php
文件不在当前目录中。我不想指定init.php
的绝对路径,因为目前电流有点不稳定。
我可以想到2个解决方案:
- 在子目录中包含一个
.htaccess
文件,该文件使用相对路径指向父目录 (../init.php
( - 在所有子目录中包含一个
init.php
文件
有没有另一种方法可以指定适用于所有子目录的预置文件?
如果做不到这一点,有没有另一种方法可以将 Web 根放入一个没有这种废话的超级全局?
定义相对于自动预置文件的路径。
初始化.php
define('WEBROOT', __DIR__);
然后,您应该能够在应用程序中的任何位置使用WEBROOT
。或者,如果您想坚持当前的方法:
$_SERVER['WEB_ROOT'] = __DIR__;
只是好奇。为什么不直接使用$_SERVER['DOCUMENT_ROOT']
. 这不是指你的网络根目录吗?