环境:centos7 php7.2.
我按照教程中的说明构建FPM / FastCGI.
build FPM/FastCGI
在/etc/httpd/conf.d/php.conf中显示我的重要配置.
<IfModule mod_php7.c>
<FilesMatch \.(php|phar)$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
</IfModule>
在我的vps目录/ var / www / html中,使用两个名称info.php和info.html在下面分配相同的内容.
<?php
phpinfo();
?>
在浏览器中输入vps_ip / info.php,显示以下输出:
Code:
System Linux localhost.localdomain 2.6.32-042stab132.1 #1 SMP Wed Jul 11 13:51:30 MSK 2018 x86_64
Build Date Oct 10 2018 10:01:57
Server API FPM/FastCGI
Virtual Directory Support disabled
在浏览器中输入vps_ip / info.html,显示以下输出:
System Linux localhost.localdomain 2.6.32-042stab132.1 #1 SMP Wed Jul 11 13:51:30 MSK 2018 x86_64
Build Date Oct 10 2018 10:01:57
Server API Apache 2.0 Handler
Virtual Directory Support disabled
为什么我的浏览器将info.html的服务器API显示为Apache 2.0处理程序,
但是将info.php的服务器API显示为FPM / FastCGI?
尝试如下设置HTML的FilesMatch.
<FilesMatch ".+\.html$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
输入vps_ip / info.html,出现错误:
Access denied.
猫/etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot /var/www/html
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/html">
Options +Indexes +FollowSymLinks +ExecCGI
AddHandler php-fastcgi .php
Action php-fastcgi /cgi-bin/php.fastcgi
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-httpd-php .php .html
AddType application/x-httpd-php-source .phps
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
apachectl -S
VirtualHost configuration:
*:80 localhost.localdomain (/etc/httpd/conf/httpd.conf:130)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex fcgid-pipe: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex fcgid-proctbl: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: _RH_HAS_HTTPPROTOCOLOPTIONS
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48
我想用apache的FPM / FastCGI方式而不是Apache 2.0 Handler方式打开vps_ip / info.html.
解决方法:
1.在php.ini中设置配置
cgi.fix_pathinfo=0
2.在www.conf中设置配置
改变
security.limit_extensions = .php .php3 .php4 .php5
进入
security.limit_extensions =
现在允许所有扩展.
sudo setenforce Permissive
sudo systemctl restart httpd
sudo systemctl restart php72-php-fpm
检查在浏览器中键入your_vps_ip / info.html时会发生什么.