我正在尝试将 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>
但是当我使用进行调试时phpinfo()
,它仍然没有显示path_info,orig_path_info或orig_path_info_translated(我相信它们是由于打开AcceptPathInfo指令而产生的)。
我也尝试过简单地在 .htaccess 文件中设置指令AcceptPathInfo
On,但仍然无济于事。
我一直在检查我的 Dev 和 Live 环境之间的设置,似乎 Dev 服务器正在使用 FastCGI 运行 PHP 并使用 cgi.fix_pathinfo。
通常情况下,我对修改 httpd.conf 和 php.ini 相当有信心,但目前,我已经陷入了比我所能接受的程度更深的困境。我在这里遗漏了什么?
答案1
要在 Apache 中打开AcceptPathInfo
(例如 Moodle 2.9),您需要更改 httpd.conf,如下所示:
对于 Apache 2.4 之前的版本:
<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>
对于 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>