PHP&。htaccess:多个目录的前置文件

PHP&。htaccess:多个目录的前置文件,php,.htaccess,prepend,document-root,Php,.htaccess,Prepend,Document Root,我想使用.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']);

我想使用
.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']);

定义相对于自动前置文件itsef的路径

init.php

define('WEBROOT', __DIR__);
然后,您应该能够在应用程序中的任何位置使用
WEBROOT
。或者,如果您想坚持当前的方法:

$_SERVER['WEB_ROOT'] = __DIR__;

只是好奇。为什么不直接使用
$\u服务器['DOCUMENT\u ROOT']
。这不是指你的网络根吗?

谢谢你的回答。然而,这对我不起作用。我喜欢您使用
\uuuu DIR\uuuu
的方法,这比我的方法要好,但问题是首先要处理
init.php
文件。
.htaccess
文件位于web根目录中,
init.php
文件也位于web根目录中,但是如果从子目录加载
init.php
文件,则该文件位于错误的位置。Apropos
$\u SERVER['DOCUMENT\u root']
,这似乎是主文档根目录。我有很多虚拟主机,但这并不是指它们。@Manngo,我有点困惑
\uuuu DIR\uuuu
返回当前文件的目录,因此,如果您使用与
auto\u prepend\u文件相同的
init.php
,那么无论您实际运行哪个脚本,
init.php
及其目录都不会更改。我遗漏了什么?出于测试目的,我有
print\uuuu DIR\uuuu
init.php
中。两者都在web根目录中。如果我从子目录执行一个PHP文件(
articles.PHP
),我会得到
致命错误:未知:无法在第0行的未知中打开所需的'init.PHP'(include_path='。:/usr/share/pear:/usr/share/PHP')。我认为这是因为
.htaccess
指示
articles.php
文件从同一子目录中预编译
init.php
,该子目录不存在,只存在于父根目录中。问题不在于
init.php
文件本身,而是从子目录引用它。@Manngo哦,我明白了。不要在
.htaccess
文件中设置
auto\u prepend\u文件。改为在
php.ini
中执行一次。记住重新启动服务器。