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
中执行一次。记住重新启动服务器。