温馨提示×

ubuntu php为何报错500

小樊
60
2026-09-01 11:16:25
栏目: 编程语言

在 Ubuntu 上 PHP 报 500 Internal Server Error,通常不是 PHP 语法本身直接提示,而是服务器(Apache / Nginx + PHP)无法正确执行脚本。下面按常见原因逐一说明,你可以对照排查。


一、最常见原因

1. PHP 代码有致命错误(但错误被隐藏)

PHP 报错被关闭时,就会直接 500。

排查方法:

tail -n 50 /var/log/apache2/error.log
# 或
tail -n 50 /var/log/nginx/error.log

或临时打开错误显示(仅测试):

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

2. PHP 未正确安装或模块未启用

Apache 用户

php -v
a2enmod php8.1   # 根据你的 PHP 版本
systemctl restart apache2

检查:

apache2ctl -M | grep php

Nginx 用户

确认有:

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

并:

systemctl restart php8.1-fpm
systemctl restart nginx

3. 文件权限问题(非常常见)

Web 服务器用户(www-data)无法读取文件。

ls -l /var/www/html/yourfile.php

修复:

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

4. .htaccess 配置错误(Apache)

错误示例:

php_value xxx yyy

若 PHP 不是 Apache 模块,会 500。

测试:

mv .htaccess .htaccess.bak

5. PHP 扩展缺失

例如用了 mysqli 但没装:

php -m | grep mysqli

安装:

apt install php8.1-mysql
systemctl restart apache2

6. SELinux / AppArmor(较少但可能)

Ubuntu 默认 AppArmor:

aa-status

二、快速自检清单 ✅

  • [ ] 查看 error.log(最关键)
  • [ ] PHP 版本匹配
  • [ ] 文件权限正确
  • [ ] PHP 模块启用
  • [ ] 无语法错误
  • [ ] .htaccess 正常

三、如果你愿意,我可以更精准帮你

请告诉我:

  1. Ubuntu 版本
  2. Apache 还是 Nginx
  3. PHP 版本
  4. 错误日志内容(关键)

我可以直接帮你定位到具体原因。

0 踩