似乎无法在 Apache 中设置 AcceptPathInfo

nag*_*eeb 6 php5 apache-2.4

我正在尝试将 ExpressionEngine 站点迁移到新服务器上,但似乎遇到了障碍。对于所需的功能,EE 要求打开AcceptPathInfo指令,而对于我的一生,我似乎无法让 Apache 合作。

该服务器运行 Fedora Core 18、Apache 2.4.3 和 PHP 5.4.11 Apache 模块。

我尝试在我的虚拟主机配置中设置以下内容:

<VirtualHost *:80>
        DocumentRoot /home/mysite/public_html
        ServerName mysite.com
        <Directory /home/mysite/public_html/>
                AcceptPathInfo On
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但是当我使用 调试时phpinfo(),它仍然不显示 path_info、orig_path_info 或 orig_path_info_translated(我认为这是由于打开 AcceptPathInfo 指令而产生的)。

我也试过简单地AcceptPathInfo在我的 .htaccess 文件中设置指令On,但仍然无济于事。

我一直在检查我的 Dev 和 Live 环境之间的设置,似乎 Dev 服务器正在使用 FastCGI 运行 PHP,并且正在使用 cgi.fix_pathinfo。

通常,我对修改我的 httpd.conf 和 php.ini 相当有信心,但在这一点上,我离兔子洞比我舒服多了。我在这里缺少什么?

小智 3

要在 Apache (p.ex Moodle 2.9) 中打开AcceptPathInfo,您需要更改 httpd.conf,如下所示:

对于 2.4 之前的 Apache 版本:

<VirtualHost *:80>
    ServerName moodleback.local
    DocumentRoot "/usr/local/www/moodle"
    AcceptPathInfo On
    <Directory /usr/local/www/moodle>
      AllowOverride None
      Order Allow,Deny
      Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

对于 Apache 2.4.x 或更高版本:

<VirtualHost *:80>
    ServerName moodleback.local
    DocumentRoot "/usr/local/www/moodle"
    AcceptPathInfo On
    <Directory /usr/local/www/moodle/>
      AllowOverride None
      Require all granted
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)