news 2026/7/18 2:04:01

PHP Warning 与 Notice 大全:最容易踩的 20 个坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP Warning 与 Notice 大全:最容易踩的 20 个坑

“代码明明能跑,怎么满屏 Warning / Notice?”
“是不是我 PHP 学得不行?”
“这些报错不管行不行?”

说句大实话:
👉90% 的 PHP 新手,都是被 Warning 和 Notice 搞到怀疑人生的。

而且最气的是:

  • 不报 Fatal Error
  • 页面还能打开
  • 但日志刷屏、接口异常、header 报错连环炸

这篇文章,我就用人话,帮你一次性把PHP Warning / Notice 最容易踩的 20 个坑讲清楚。


一、先搞清楚:Warning / Notice 到底是啥?

很多新手第一反应是:

“是不是报 Warning 就是大问题?”

其实不是。

PHP 报错严重程度顺序(从轻到重)

1️⃣Notice(提醒你写得不规范)
2️⃣Warning(可能有问题,但还能跑)
3️⃣Fatal Error(直接崩)

⚠️ 但注意一句话:
Warning / Notice 本身不致命,但“连锁反应”很致命。


二、Notice 类:新手 10 个必踩坑

1️⃣ Undefined variable(用之前没定义)

echo $name;

❌ 常见场景:

  • 表单没提交
  • if 没走进去
  • 函数外变量没传进来

✅ 正确写法:

$name = $name ?? ''; echo $name;

2️⃣ Undefined index(数组键不存在)

echo $_POST['email'];

❌ 用户没填就炸

✅ 正确写法:

$email = $_POST['email'] ?? '';

3️⃣ Undefined offset(数组下标越界)

$arr = []; echo $arr[0];

✅ 解决思路:
用之前先判断:

if (isset($arr[0])) { echo $arr[0]; }

4️⃣ Trying to access array offset on value of type null

$data = null; echo $data['id'];

📌 本质:
你以为它是数组,其实是 null


5️⃣ Use of undefined constant

echo test;

PHP 会当成字符串前先 Notice 一下

✅ 正确写法:

echo 'test';

6️⃣ Only variables should be passed by reference

reset(explode(',', $str));

📌 这是老坑,新手 100% 会遇到


7️⃣ Array to string conversion

echo $arr;

📌 PHP:你想让我怎么输出?


8️⃣ Object of class could not be converted to string

和上面一个道理,只是对象版本


9️⃣ Notice 被 header 报错“连坐”

很多人忽略:
👉Notice 输出 = 页面已经有内容

后面再 setcookie / header,直接炸。


🔟 开发环境没开 error_reporting

不开调试,新手永远不知道自己错在哪。


三、Warning 类:更危险的 10 个坑

11️⃣ Cannot modify header information

🔥PHP 最经典报错之一

原因总结一句话:
👉header 之前,有任何输出

包括:

  • BOM
  • echo
  • Notice
  • 多余空行

12️⃣ fopen / file_get_contents 失败

file_get_contents($url);

❌ 常见原因:

  • 路径错
  • 权限不够
  • 远程文件被禁

13️⃣ include / require failed

include 'config.php';

📌 路径问题占 80%


14️⃣ Division by zero

$avg = $sum / $count;

$count = 0 的时候直接 Warning


15️⃣ Invalid argument supplied for foreach

foreach ($data as $v) {}

$data 其实是 null / false


16️⃣ mysqli_fetch_assoc expects parameter 1 to be mysqli_result

📌 SQL 执行失败,但你还在 fetch


17️⃣ count(): Parameter must be an array or Countable

PHP 7+ 高频坑


18️⃣ curl_exec(): SSL certificate problem

📌 curl + https + 证书


19️⃣ Cannot use a scalar value as an array

$a = 1; $a['x'] = 2;

20️⃣ Deprecated 准 Warning 级别(升级 PHP 后)

老项目升级 PHP,直接满屏。


四、新手必须记住的 3 条生存法则

✅ 1. 所有变量,用之前先判断

$var = $var ?? '';

✅ 2. 所有数组访问,用 isset / ??

$value = $arr['key'] ?? null;

✅ 3. 开发环境显示错误,生产环境记录日志

error_reporting(E_ALL); ini_set('display_errors', 1);

上线一定关显示!


五、这些 Warning / Notice 能不能不管?

能跑 ≠ 没问题

你现在不管,后面一定会遇到:

  • header 失效
  • 接口返回异常
  • JSON 输出被污染
  • 前端解析失败

👉很多“诡异 BUG”,根源就是一个 Notice。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 23:30:53

黑客大神都会玩这 10 个 Linux 命令,我不允许你还不知道!

Linux当中有很多比较有趣的命令,可以动手看看,很简单的。 1.rev命令 一行接一行地颠倒所输入的字符串。 运行: $rev 如输入:shiyanlou shiyanlou 2.asciiview命令 1.先安装aview $sudo apt-get install aview 2.再安装im…

作者头像 李华
网站建设 2026/7/15 21:33:53

Wi-Fi CERTIFIED Data Elements™ 技术概述

引言 在住宅网络中,Wi-Fi 是占据主导地位的技术 。由于对互联设备的日益依赖,所以服务提供商确信有必要按照需求,在确保网络高效率运行的同时,提升 Wi-Fi 的服务质量。Wi-Fi CERTIFIED Data Elements™是 Wi-Fi Alliance 的一项认证计划,为 Wi-Fi 网络提供了一套标准化的…

作者头像 李华
网站建设 2026/7/17 3:58:01

基于YOLO的小目标检测增强:一种提升精度与效率的新框架

摘要 本文研究并开发了在大规模航拍图像中检测小目标的方法。当前航拍图像中的小目标检测方法通常涉及图像裁剪和检测器网络架构的修改。滑动窗口裁剪以及包括更高分辨率特征图和注意力机制在内的架构增强技术是常用的方法。鉴于航拍图像在各种关键和工业应用中的重要性日益增长…

作者头像 李华
网站建设 2026/7/17 3:03:18

stm32编码总结

总结: 一个工程里,同时有GBK、UTF-8两种编码的文件 ; Keil编码使用GB2312 , 令编译时把汉字解释为两字节,以兼容目前的开发周边; 不要在生成的文件如main.c里头写中文,在用户文件实现中文。 1、用户文件:使…

作者头像 李华
网站建设 2026/7/14 4:22:41

轻量级AI模型高并发应用实战:5大核心技巧深度解析

轻量级AI模型高并发应用实战:5大核心技巧深度解析 【免费下载链接】Qwen3-0.6B Qwen3 是 Qwen 系列中最新一代大型语言模型,提供全面的密集模型和混合专家 (MoE) 模型。Qwen3 基于丰富的训练经验,在推理、指令遵循、代理能力和多语言支持方面…

作者头像 李华