如何通过.htaccess设置PHP包含路径?

www*_*com 9 php apache .htaccess apache2 include

我想将PHP包含路径设置为另一个目录.我尝试将它放在.htaccess文件中,但这不起作用.我唯一看到的是我在httpd.conf中设置的include路径,但不是我试图添加的路径.

<IfModule mod_php5.c>
php_value include_path ".:/var/www/mywebsite/"
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我做了a2enmod mod_php5,但它已经运行了,所以我想PHP5已经作为Apache模块运行了.

[编辑]在我的vhost配置中我有这个:

<Directory ~ "^/var/www/.*">
        AllowOverride All
        Options FollowSymLinks -Indexes -MultiViews
        php_value include_path ".:./include:./.include/:/var/www/.include/:/var/www/"
</Directory>
Run Code Online (Sandbox Code Playgroud)

更多信息(phpinfo()):

Loaded Modules  core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_auth_mysql mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_status

include_path    .:./include:./.include/:/var/www/.include/:/var/www/    .:/usr/share/php:/usr/share/pear
Run Code Online (Sandbox Code Playgroud)

问候,凯文

Geo*_*ins 7

必须配置Apache以允许通过.htaccess覆盖设置.检查您的Apache配置文件(httpd.conf)以获取您的目录的覆盖:

<Directory "/directory/containing/your/htaccess/file">
    AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)

将其放在您网站的vhost定义中.

如果这是全局更改,则应更改php.ini文件中的include_path设置,而不是使用.htaccess.

这两个更改都需要重新启动Apache.

编辑:

这是来自Apache Core功能页面的引用:

"假设要访问的文件名是/home/abc/public_html/abc/index.html.服务器会考虑/,/ home,/ home/abc,/ home/abc/public_html和/ home/abc/public_html中的每一个./abc按顺序.在Apache 1.2中,当考虑/ home/abc时,正则表达式将匹配并应用.在Apache 1.3中,正则表达式在树中的那个点上根本不被考虑.它不会在所有正常的s和.htaccess文件都被应用之后才被考虑.然后正则表达式将匹配/ home/abc/public_html/abc并被应用."

我认为,根据这些信息,您的php_value include_path语句将在.htaccess文件之后进行评估.如果是这种情况,include_path则会覆盖.htaccess中使用的值.你能尝试暂时删除该include_path线<Directory>来测试这个理论吗?