我继承了一个开发测试服务器,该服务器“未按预期运行php网站”。
似乎已安装PHP:
$ php -v
PHP 7.0.33-0+deb9u3 (cli) (built: Mar 8 2019 10:01:24) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0+deb9u3, Copyright (c) 1999-2017, by Zend Technologies
还加载了Apache php模块:
$ apache2ctl -M | grep php
php7_module (shared)
模块配置文件/etc/apache2/mods-enabled/php7.0.conf
似乎是完全正常的。它包含用于设置php文件的MIME类型的以下行:
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
但是香草虚拟主机不会处理php文件,而是显示简单的php代码。
所以(暂时)我(对此)进行修复的方式是这样的:
/var/www/php-bin
php
,该文件包含一行:
#!/opt/php72/bin/php-cgi
在网站配置中添加了以下两行:
ScriptAlias /php-bin/ /var/www/php-bin/
Action application/x-httpd-php /php-bin/php
不是这个特定的虚拟主机正确运行php文件。
很明显,这只是一个hack。 /opt/php72/bin/php-cgi
文件只是在文件系统中找到的,它与执行$ php -v
命令时运行的php版本不同。
我想修复此服务器,并使用自定义ScriptAlias和Action config指令避免这种黑客攻击。由于已安装php和apache php mod软件包,并且已加载php mod,因此任何默认虚拟主机都应处理php文件。仅当网站必须由其他php版本处理时,才需要进行额外的配置。