温馨提示×

ubuntu php-fpm为何无法解析php

小樊
47
2026-09-10 09:20:17
栏目: 编程语言

在 Ubuntu 上 php-fpm 无法解析 PHP(浏览器直接下载 PHP 文件或显示源码),通常不是 PHP 本身坏了,而是 Web 服务器没有把 .php 请求交给 php-fpm 处理。下面按最常见原因逐步排查。


一、最常见原因:Nginx / Apache 没配置 PHP 解析

✅ 如果你用的是 Nginx

Nginx 本身不能解析 PHP,必须转发给 php-fpm。

检查站点配置(如 /etc/nginx/sites-enabled/default

必须有类似:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

⚠️ 注意:

  • php8.1-fpm.sock 版本要和实际安装一致
  • 改完要:
nginx -t
systemctl reload nginx

✅ 如果你用的是 Apache

Apache 需要启用 proxy_fcgiphp-fpm

a2enmod proxy_fcgi setenvif
a2enconf php8.1-fpm
systemctl restart apache2

二、php-fpm 服务没启动

systemctl status php8.1-fpm

如果没运行:

systemctl start php8.1-fpm
systemctl enable php8.1-fpm

三、php-fpm sock 文件不存在或权限错误

ls -l /run/php/

应该看到:

php8.1-fpm.sock

如果不存在:

  • php-fpm 没启动
  • 或 Nginx/Apache 用户无权限(通常是 www-data

四、PHP 文件被当作静态文件(MIME 问题)

如果浏览器直接下载 .php 文件,说明:

  • Web 服务器没识别 PHP
  • 或没转发给 php-fpm

✅ 正确表现:

  • 访问 info.php
  • 显示 PHP Info 页面

五、确认 PHP 是否安装成功

php -v

如果没输出:

apt install php php-fpm

六、快速自检清单 ✅

检查项 命令
php-fpm 是否在运行 systemctl status php-fpm
nginx 是否 reload nginx -t && systemctl reload nginx
是否有 php 解析配置 grep php /etc/nginx/sites-enabled/*
访问 php 是否仍下载 浏览器访问 info.php

七、最小可运行示例(Nginx + php-fpm)

server {
    listen 80;
    root /var/www/html;
    index index.php index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

如果你愿意,可以贴出:

  • Web 服务器(Nginx / Apache)
  • php -v
  • 站点配置文件

我可以直接帮你指出是哪一行导致 PHP 不被解析。

0