Debian 上 PHP 无法解析(浏览器直接下载/显示源码),通常不是 PHP 没装,而是 Web 服务器没有把 PHP 交给解释器。下面按「最常见 → 较少见」来排查。
如果你用的是 Apache:
dpkg -l | grep php
如果没看到 libapache2-mod-php,说明 Apache 没装 PHP 模块。
✅ 解决:
sudo apt update
sudo apt install libapache2-mod-php php-cli
sudo systemctl restart apache2
确认模块已启用:
ls /etc/apache2/mods-enabled/ | grep php
如果没有:
sudo a2enmod php
sudo systemctl restart apache2
如果你是 Nginx + PHP-FPM,Nginx 默认 不会解析 PHP。
✅ 正确配置示例(关键):
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
然后:
sudo systemctl restart nginx
sudo systemctl restart php-fpm
⚠️ 注意:
php-fpm.sock 版本要对(如 php8.2-fpm.sock)location ~ \.php$ 必须存在php -v
如果没输出,说明没装:
sudo apt install php
Debian 12 默认是 PHP 8.2。
/var/www/htmlroot 设的是哪ls /var/www/html/index.php
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
确认 index.php 内容正确:
<?php
phpinfo();
⚠️ 注意:
<?php<?(短标签,默认关闭)说明: ✅ Web 服务器 完全没识别 PHP
常见原因:
fastcgi_pass逐项确认:
php -vlibapache2-mod-php 已安装a2enmod phpfastcgi_pass<?php 写法正确你可以直接贴出:
我可以一步一步给你精确命令 ✅