温馨提示×

怎么解决Ubuntu PHP报错

小樊
32
2026-06-30 22:49:25
栏目: 编程语言

Ubuntu 下 PHP 报错的原因很多,最常见的通常是 PHP 版本、模块缺失、权限或配置问题。下面我按**“快速定位 → 常见报错 → 解决方法”**的结构给你一个实用排查指南,你可以对照着来。


一、先确认 PHP 是否能正常运行

1️⃣ 查看 PHP 版本

php -v

如果提示:

command not found

说明 PHP 没装或没加入 PATH

安装(以 PHP 8.1 为例):

sudo apt update
sudo apt install php8.1 php8.1-cli

二、查看具体报错信息(非常关键)

1️⃣ 命令行 PHP 报错

php your_script.php

2️⃣ Web 访问报错(Apache / Nginx)

查看错误日志:

Apache

sudo tail -n 50 /var/log/apache2/error.log

Nginx + PHP-FPM

sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/php8.1-fpm.log

把报错内容复制到搜索引擎,能解决 80% 问题。


三、Ubuntu 下 PHP 最常见报错及解决方法


❌ 1. PHP 模块缺失(最常见)

报错示例

Class 'PDO' not found
Call to undefined function curl_init()

解决

sudo apt install php8.1-mysql php8.1-curl php8.1-mbstring php8.1-xml

常用模块:

php8.1-common
php8.1-mysql
php8.1-curl
php8.1-gd
php8.1-mbstring
php8.1-xml
php8.1-zip

安装后重启:

sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm

❌ 2. PHP 与 Apache / Nginx 没关联

现象

  • .php 文件直接下载
  • 页面空白

Apache 解决

sudo apt install libapache2-mod-php8.1
sudo a2enmod php8.1
sudo systemctl restart apache2

Nginx 解决

确保:

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

然后:

sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm

❌ 3. 权限问题(无法写文件、session 错误)

报错示例

Permission denied
Failed to open stream

解决

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

❌ 4. PHP 报错但不显示

原因

生产环境默认关闭错误显示。

临时查看错误

修改:

sudo nano /etc/php/8.1/apache2/php.ini

设置:

display_errors = On
error_reporting = E_ALL

重启服务 ✅


❌ 5. 多个 PHP 版本冲突

查看所有 PHP 版本

update-alternatives --display php

切换版本

sudo update-alternatives --config php

四、通用排错速查表

现象 可能原因
命令 php 不存在 未安装 PHP
页面空白 PHP 错误未显示
下载 PHP 文件 PHP 未与 Web 服务关联
Class not found 扩展未安装
502 Bad Gateway PHP-FPM 未运行
403 Forbidden 权限问题

五、我可以更精准帮你

你可以直接把:

  • 完整报错信息
  • ✅ Ubuntu 版本(lsb_release -a
  • ✅ PHP 版本
  • ✅ 使用的 Web 服务(Apache / Nginx)

贴出来,我可以 一步一步帮你定位到具体原因并给出命令

0