做网站最怕什么?不是需求改三遍,而是页面突然一片白,日志里还躺着一句看不懂的 PHP 报错。作为扎根西安的软件开发团队,陕西星环深索在西安网站开发、西安小程序开发、AI智能体开发中,几乎天天和 PHP 打交道。今天就用轻松的方式,盘点 PHP 开发网站常见报错和解决思路。
先说结论:PHP 报错不可怕,可怕的是不看日志。打开 php.ini 里的 display_errors 和 error_reporting,开发环境让错误显示出来,生产环境写进日志,排查效率直接翻倍。
1. Warning: include(): Failed opening ...
典型症状:页面缺了一块,提示找不到文件。多数是路径写错,或者相对路径在不同入口文件下“迷路”。
- 用
__DIR__拼绝对路径,例如require __DIR__ . '/config.php'; - 检查文件名大小写,Linux 服务器对大小写很敏感。
- 确认文件权限,别让 Web 用户读不了。
2. Notice: Undefined index / Undefined variable
这种报错像小提醒:你用了没定义的变量或数组键。PHP 8 对这类问题更严格,别再用 @ 压制。
- 接收表单用
$_POST['name'] ?? ''。 - 数组取值前先
isset()或array_key_exists()。 - 初始化变量,别让代码“裸奔”。
3. Parse error: syntax error, unexpected ...
语法错误通常最直接:少分号、少括号、多逗号,或者 PHP 版本不兼容。比如 PHP 8 里一些旧写法会直接罢工。
- 看错误行号,往往在上一行结尾。
- 用 IDE 的语法检查,别靠肉眼硬扛。
- 部署前确认服务器 PHP 版本,本地 8.2 线上 7.4 容易翻车。
4. Fatal error: Call to undefined function mysqli_connect()
函数不存在?多半是扩展没开。PHP 的 mysqli、curl、gd、mbstring 等扩展,缺一个都可能让网站功能“瘸腿”。
- 检查
php.ini,去掉对应扩展前的分号。 - 重启 PHP-FPM 或 Apache。
- 用
php -m或phpinfo()确认扩展已加载。
5. 500 Internal Server Error
500 是服务器在说“我出问题了,但我不想告诉你细节”。这时别猜,直接看错误日志。
- Nginx 看
error.log,Apache 看error_log。 - 检查目录权限、
.htaccess规则、PHP 版本。 - 如果是框架项目,清缓存、看框架日志,往往有惊喜。
6. Headers already sent
想跳转却提示 headers already sent?通常是 前有空格、BOM,或者文件末尾多了换行。
- 用无 BOM 的 UTF-8 保存文件。
- 纯 PHP 文件省略结尾
?>。 - 跳转前不要输出任何内容,包括 echo 和 HTML。
7. Access denied for user ...
数据库连接被拒,常见原因是账号、密码、主机不对,或者用户没有远程权限。
- 核对
DB_HOST、DB_USER、DB_PASS。 - 检查数据库用户权限和绑定主机。
- 生产环境别用 root,安全第一。
8. Allowed memory size exhausted
内存耗尽,通常是循环查库、大数组、图片处理惹的祸。
- 优化 SQL,分页处理,别一次性查十万条。
- 及时
unset()大变量。 - 必要时调整
memory_limit,但先找根因。
在陕西星环深索看来,PHP 网站报错处理有一套通用打法:先看日志,再复现,然后缩小范围,最后修复并加监控。我们做西安软件开发、西安网站开发时,会把常见错误整理成知识库;做 AI智能体开发时,也会让智能体辅助分析日志、给出修复建议,让排错从“玄学”变成“工程”。
如果你正在西安找网站开发、小程序开发或 AI智能体开发团队,遇到 PHP 报错别一个人头秃。陕西星环深索,帮你把网站跑得稳、跑得快、跑得放心。