新安装Apache2及虚拟主机后CGI目录PHP文件显示纯文本求助
问题排查与解决方案
1. 核心路径匹配错误
你虚拟主机中配置的PHP5.6规则是针对<Directory "/var/www/pt/pt_v1">,但实际访问的是dev.jts.co.uk/jts/jts_v1/phpinfo.php,对应服务器路径是/var/www/jts/jts_v1——这直接导致你设置的CGI规则完全没生效,目标目录下的PHP文件只能按默认方式处理(纯文本显示或被下载)。
解决:将虚拟主机中的<Directory "/var/www/pt/pt_v1">块修改为<Directory "/var/www/jts/jts_v1">,或者调整访问路径到/pt/pt_v1下。
2. 路径纠正后的额外排查点
如果修正路径后问题仍存在,按以下步骤逐一验证:
(1)确认CGI程序的访问权限
虽然你能通过命令行执行php-cgi5.6,但要确保Apache运行用户(通常是www-data)对该文件有读和执行权限:
sudo chown www-data:www-data /var/www/cgi-bin/php-cgi5.6 sudo chmod 755 /var/www/cgi-bin/php-cgi5.6
(2)强制禁用mod_php7.4接管
在目标目录的<Directory>块中添加以下规则,确保mod_php不会干扰CGI的处理:
<FilesMatch "\.php$"> SetHandler None SetHandler default-handler </FilesMatch>
(3)查看Apache错误日志定位细节
实时监控错误日志,获取访问PHP文件时的具体报错:
sudo tail -f /var/log/apache2/error.log
日志会明确提示是否存在CGI程序找不到、权限不足或配置冲突等问题。
(4)重载Apache使配置生效
每次修改虚拟主机配置后,必须执行重载:
sudo systemctl reload apache2
内容的提问来源于stack exchange,提问作者BadAddy
相关产品推荐
相关产品推荐

