apache的fastcgi模式下,如何安全设置phar文件?
发布于 作者:苏南大叔 来源:程序如此灵动~
书接上文,apache对接php有两种模式,大多数情况下,使用的是handler模式。但是个别情况下,也会使用fastcgi模式,也就是说,php文件都是交予php-fpm处理的,这种情况下,phar的安全性又如何呢?答案将在本文中揭晓。

前言

读取本文内容之前,请自行查看phpinfo里面关于server api的值,是否是FPM/FastCGI,以确定您的环境,是否和本文中苏南大叔所描述环境一致。
如何配置apache对接php-fpm,请参考苏南大叔的这篇文章。https://newsn.net/say/apache-fastcgi-php.html 。
修改apache的配置文件
httpd.conf关键点如下:
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/other/*.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
<Directory />
AllowOverride none
#Require all denied
allow from all
</Directory>other/php7.conf:
<IfModule php7_module>
AddType application/x-httpd-php .phar
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
<IfModule proxy_module>
<FilesMatch \.php|\.phar$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</IfModule>
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>在这里有三条IfModule指令:
IfModule php7_module已经失效,大家无视即可。IfModule proxy_module,这里是敲黑板重点,注意里面的phar字样。IfModule dir_module,这个设置默认首页的,我们从php7_module里面提出来了。
效果对比
对于启用phar前后,phar的处理对比图如下:


结论
我们通过修改apache的配置,成功的识别并保护了phar源码,很开心的节奏。
更多有关phar的相关经验文件,苏南大叔提示您,点击这里查看:https://newsn.net/tag/phar/ 。