温馨提示×

ubuntu php fpm为何无法解析

小樊
47
2026-09-04 13:20:40
栏目: 编程语言

“Ubuntu 下 PHP‑FPM 无法解析(访问 PHP 文件变成下载 / 空白 / 404 / 源码)”是非常常见的问题,通常不是 PHP 本身坏了,而是 Web 服务器没有把 PHP 请求交给 PHP‑FPM。下面按最常见原因 → 排查步骤给你一个系统清单。


一、最常见原因(90% 都在这里)

1️⃣ Nginx / Apache 没有配置 PHP‑FPM

Nginx 典型错误

location / {
    root /var/www/html;
    index index.html;
}

❌ 没有 PHP 处理规则

✅ 正确示例(Nginx + PHP‑FPM):

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

修改后:

sudo nginx -t
sudo systemctl reload nginx

2️⃣ PHP‑FPM 没有运行

systemctl status php8.2-fpm

如果没运行:

sudo systemctl start php8.2-fpm
sudo systemctl enable php8.2-fpm

查看 sock 是否存在:

ls /run/php/

3️⃣ 浏览器直接下载 PHP 文件

说明 Web 服务器没识别 PHP

  • Nginx:没 location ~ \.php$
  • Apache:没启用 proxy_fcgi / php_module

二、Apache 场景(Ubuntu)

Apache 正确配置 PHP‑FPM

sudo apt install php8.2-fpm libapache2-mod-fcgid
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm
sudo systemctl restart apache2

错误示例:

  • 只装了 libapache2-mod-php(但用的是 FPM)
  • 或根本没启用 PHP 模块

三、权限问题(也很常见)

PHP‑FPM sock 权限

ls -l /run/php/php8.2-fpm.sock

www.conf 中:

listen.owner = www-data
listen.group = www-data

修改后:

sudo systemctl restart php8.2-fpm

四、测试 PHP 是否真的被解析

/var/www/html/info.php
<?php
phpinfo();

访问:

http://服务器IP/info.php
  • 显示 PHP 信息 ✅ 正常
  • 下载文件 ❌ 没交给我们
  • 空白页 ❌ PHP 报错

五、看错误日志(最关键)

Nginx

tail -n 50 /var/log/nginx/error.log

PHP‑FPM

tail -n 50 /var/log/php8.2-fpm.log

六、快速自检清单 ✅

  • [ ] PHP‑FPM 已安装并运行
  • [ ] Web 服务配置了 fastcgi / fpm
  • [ ] sock 路径正确
  • [ ] 文件权限是 www-data
  • [ ] 重载了服务
  • [ ] 测试文件能解析

七、如果你愿意,我可以精确帮你

你可以直接贴:

  1. Ubuntu 版本
  2. Nginx 还是 Apache
  3. PHP 版本
  4. 报错或现象(下载 / 404 / 空白)
  5. 相关配置片段

我可以一步一步帮你改到能解析 ✅

0 踩