Ubuntu 22.04.3下Apache+PHP-FPM无法解析PHP代码求助
问题排查:Apache返回PHP源码而非执行(PHP-FPM配置)
问题现象
在Ubuntu 22.04.3 LTS系统上安装PHP-FPM并启用proxy_fcgi模块后,访问PHP测试文件(如phpinfo.php)时,Apache直接返回PHP源码,而非执行后输出PHP环境信息。已确认PHP-FPM服务运行正常、Unix套接字存在,Apache日志无错误信息,相关模块已启用,但问题仍未解决。
相关配置与验证信息
虚拟主机配置(/etc/apache2/sites-enabled/000-default.conf)
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory> <FilesMatch \.php$> SetHandler “proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/” </FilesMatch> </VirtualHost>
已启用的Apache模块
access_compat.load autoindex.conf filter.load proxy_fcgi.load alias.conf autoindex.load mime.conf proxy_http.load alias.load deflate.conf mime.load reqtimeout.conf auth_basic.load deflate.load mpm_event.conf reqtimeout.load authn_core.load dir.conf mpm_event.load setenvif.conf authn_file.load dir.load negotiation.conf setenvif.load authz_core.load env.load negotiation.load status.conf authz_host.load fcgid.conf proxy.conf status.load authz_user.load fcgid.load proxy.load
服务与套接字验证
# PHP-FPM进程状态 root 31905 0.0 1.0 202252 19948 ? Ss 13:35 0:00 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf) www-data 31907 0.0 0.4 202828 9512 ? S 13:35 0:00 php-fpm: pool www www-data 31908 0.0 0.4 202828 9512 ? S 13:35 0:00 php-fpm: pool www # Unix套接字存在 srw-rw---- 1 www-data www-data 0 Apr 28 16:49 /run/php/php-fpm.sock # 访问测试返回源码 $ curl http://localhost/phpinfo.php <?php phpinfo(); ?>
问题根源
虚拟主机配置中SetHandler指令使用了中文全角引号(“”),Apache无法识别该语法,导致.php文件的处理规则未生效,因此直接返回源码。
解决步骤
- 编辑虚拟主机配置文件:
sudo nano /etc/apache2/sites-enabled/000-default.conf
- 将
SetHandler行的全角引号替换为半角双引号:
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/"
- 重启Apache服务使配置生效:
sudo systemctl restart apache2
- 再次访问测试文件,确认PHP代码已正常执行。
内容的提问来源于stack exchange,提问作者binary searcher
相关产品推荐
相关产品推荐

