htaccess中的auto_prepend_file不适用于子目录

时间:2014-12-23 16:02:38

标签: php apache .htaccess include

我在auto_prepend_file中使用.htaccess指令,如下所示:

php_value auto_prepend_file "includes/init.php"

这是我文件夹的结构:

/php
    /css/main.css
    /includes/init.php
    /lib/functions.php
index.php
.htaccess

这适用于根目录中的所有文件,例如index.php。但是,它不适用于根目录中不存在的所有文件,例如functions.php文件夹中的lib

我收到以下错误:

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'includes/init.php' 
(include_path='.;C:\xampp\php\PEAR') in Unknown on line 0

似乎无法找到应该存在的文件,这是有道理的。

我试图指出我项目的根源,但我不知道如何在.htaccess内做到这一点。

我尝试将.htaccess行更改为以下内容:

#Same problem
php_value auto_prepend_file "/includes/init.php"

#Won't work for any page now
php_value auto_prepend_file "/php/includes/init.php"

我需要在.htaccess中放置什么才能使路径始终有效,无论我在层次结构中的哪个位置?

1 个答案:

答案 0 :(得分:3)

您可以像现在一样指定相对路径,但是您需要在每个文件夹中覆盖它 - 或者您需要从文件系统的根目录指定一个真正的绝对路径,例如: / p>

php_value auto_prepend_file "/var/www/mywebsite/php/includes/init.php"

在这种情况下,它总是会起作用,因为它是绝对的。

如果您无法确定绝对路径,只需在其中一个PHP文件中echo __DIR__ - 它将显示当前所在的绝对路径。