在 CentOS 上 PHP 无法解析(浏览器直接下载 .php 文件或显示源码),通常不是 PHP 本身坏了,而是 Web 服务器没有把 .php 交给 PHP 处理。下面按最常见原因逐个排查。
CentOS 常见组合是 Apache + PHP
php -v
如果没有:
yum install php -y
httpd -M | grep php
应看到类似:
php7_module (shared)
如果没有:
yum install php php-cli php-common -y
systemctl restart httpd
编辑或确认配置文件:
vim /etc/httpd/conf/httpd.conf
确保有:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
或(PHP-FPM 方式):
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php-fpm/www.sock|fcgi://localhost/var/www/html/$1
修改后:
systemctl restart httpd
systemctl status php-fpm
如果没运行:
systemctl start php-fpm
systemctl enable php-fpm
如果你用的是 Nginx:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然后:
nginx -t
systemctl restart nginx
getenforce
如果是 Enforcing:
setenforce 0
永久关闭(不推荐生产):
vim /etc/selinux/config
SELINUX=disabled
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
php -v 正常<?php phpinfo(); ?> 能显示请告诉我:
我可以直接给你 对应版本的完整配置。