Debian上的Apache:未处理PHP文件,显示代码

时间:2019-07-04 11:14:25

标签: php apache

我继承了一个开发测试服务器,该服务器“未按预期运行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版本处理时,才需要进行额外的配置。

0 个答案:

没有答案