指令 RemoveHandler 与 PHP5.6 和 PHP 7 配合使用

指令 RemoveHandler 与 PHP5.6 和 PHP 7 配合使用

我有 2 台 linode 服务器,每台都托管一个网站。站点 A 在 Ubuntu 14.04/Apache2/Mysql/PHP 5.59 下运行,站点 B 在 Ubuntu 16.04/Apache2/Mysql/PHP 7.0 下运行,我使用 Webmin/Virtualmin 来管理它们。最近我尝试在站点 B 上安装 PHP7.2,安装过程中出现了一些问题,但我想我最终克服了这些问题,结果却发现当我打开我的站点时,index.php 被下载了,而不是被 Apache 解析。经过一番挖掘,我发现站点 B 的 apache 配置如下

AddType application/x-httpd-php .php
AddHandler fcgid-script .php
AddHandler fcgid-script .php5.6
AddHandler fcgid-script .php7.0
AddHandler fcgid-script .php7.2
FCGIWrapper /home/tv/fcgi-bin/php5.6.fcgi .php5.6
FCGIWrapper /home/tv/fcgi-bin/php7.0.fcgi .php7.0
FCGIWrapper /home/tv/fcgi-bin/php7.2.fcgi .php7.2
FCGIWrapper /home/tv/fcgi-bin/php7.2.fcgi .php
</Directory>
<Directory /home/tv/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} =webmail.peaceevertvimg.org
RewriteRule ^(.*) https://peaceevertvimg.org:20000/ [R]
RewriteCond %{HTTP_HOST} =admin.peaceevertvimg.org
RewriteRule ^(.*) https://peaceevertvimg.org:10000/ [R]
RemoveHandler .php
RemoveHandler .php5.6
RemoveHandler .php7.0
RemoveHandler .php7.2
php_admin_value engine Off

我不得不评论一下

#RemoveHandler .php
#php_admin_value engine 

让网站 B 正常运行。我想知道为什么 virtualmin 会自动添加这些导致网站出现故障的指令,而我意识到这些指令实际上也存在于网站 A 中。然而,网站 A 运行正常。以下是网站 A 的相应指令

AddType application/x-httpd-php .php
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/w/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/w/fcgi-bin/php5.fcgi .php5
</Directory>
<Directory /home/w/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} =webmail.weiwei-tv.com
RewriteRule ^(.*) https://weiwei-tv.com:20000/ [R]
RewriteCond %{HTTP_HOST} =admin.weiwei-tv.com
RewriteRule ^(.*) https://weiwei-tv.com:1911/ [R]
RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off

两个站点都是在 FastCGI 模式下运行 PHP。那么为什么“RemoveHandler .php”在站点 B(PHP7.2)上会出现问题,而在站点 A(PHP5.59)上却不会出现问题呢?

相关内容