这是什么
这是一些关于在编写PHP时可能遇到的警告、错误和注意事项的答案,您不知道如何修复它们。这也是一个社区Wiki,因此邀请所有人参与添加和维护此列表
为什么会这样
问题如「;“已发送邮件头”;或;调用非对象的成员;堆栈溢出时经常弹出。这些问题的根本原因总是一样的。因此,这些问题的答案通常会重复这些问题,然后在特定情况下向OP显示要更改的行。这些答案不会给网站增加任何价值,因为它们只适用于OP的特定代码。具有相同错误的其他用户无法轻松从中读取解决方案,因为他们太本地化了。这是可悲的,因为一旦您了解了根本原因,修复错误就变得微不足道了。因此,本列表试图以一种通用的方式解释解决方案
我在这里该怎么办
如果您的问题已被标记为此问题的副本,请在下面找到您的错误消息,并对代码应用修复。答案通常包含进一步的链接,以防仅仅从一般答案中不清楚
如果你想捐款,请加上你的;“最喜欢的”;错误消息、警告或通知、每个答案一条、简短描述其含义(即使只是在手册页面上突出显示术语)、可能的解决方案或调试方法以及现有Q&;有价值的东西。此外,请随时改进任何现有答案
名单
- 什么也没看见。这一页是空白的。(也称为白页/死亡画面)
- 代码没有运行/我的PHP代码的某些部分看起来是输出的
- 警告:无法修改标题信息-标题已发送
- 警告:mysql_fetch_array()希望参数1是资源,布尔值给定a.k.a.
警告:mysql\u fetch\u array():提供的参数不是有效的mysql结果资源 - 警告:[函数]要求参数1为资源,布尔值为给定值
- 警告:[功能]:无法打开流:[原因]
- 警告:open_basedir限制生效
- 警告:被零除
- 警告:字符串偏移量“XXX”非法
- 警告:count():参数必须是实现可计数的数组或对象
- 分析错误:语法错误,意外的“[”
- 分析错误:语法错误,意外的T_XXX
- 分析错误:语法错误、意外的T_封装_和_空白
- 分析错误:语法错误,意外的T_PAAMAYIM_NEKUDOTAYIM
- 分析错误:语法错误,意外的’require_once’(T_require_once),预期函数(T_函数)
- 分析错误:语法错误,意外的T_变量
- 致命错误:允许的XXX字节内存大小已用尽(尝试分配XXX字节)
- 致命错误:对非对象或null调用成员函数
- 致命错误:调用未定义的函数XXX
- 致命错误:无法重新声明XXX
- 致命错误:无法在写上下文中使用函数返回值
- 致命错误:AAA::BBB()的声明必须与CCC::BBB()的声明兼容’
- 致命错误:不在对象上下文中使用$this
- 致命错误:类闭包的对象无法转换为字符串
- 致命错误:未定义的类常量
- 致命错误:未捕获的TypeError:参数#n必须是给定的x、y类型
- 注意:数组到字符串的转换
- 注意:尝试获取非对象错误的属性
- 注意:未定义的变量或属性
- 注意:未定义索引
- 注意:未定义的偏移量XXX[参考]
- 注意:未初始化的字符串偏移量:XXX
- 注意:使用未定义的常数XXX-假定为“XXX”
- MySQL:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第…行附近使用的正确语法
- 严格标准:不应静态调用非静态方法[<;class>;:<;method>;]
- 警告:函数要求参数X为布尔值/字符串/整数
- HTTP错误500-内部服务器错误
- 不推荐使用:不推荐使用带大括号的数组和字符串偏移访问语法
另见:
- 参考-这个符号在PHP中是什么意思
警告:无法修改标题信息-标题已发送
当脚本尝试将HTTP头发送到客户端,但之前已经有输出,导致头已发送到客户端时发生
这是一个E_警告,它不会停止脚本
典型的示例是这样的模板文件:
<;html>;
<;?php会话_start();?>;
<;标题>;<;标题>;我的页面<;/title>;
<;/html>;
...
session\u start()函数将尝试使用会话cookie向客户端发送头。但是PHP在将<;html>;元素写入输出流时已经发送了头。您必须将session\u start()移到顶部
您可以通过查看触发警告的代码之前的行来解决此问题,并检查其输出位置。将任何发送头代码移到该代码之前
一个经常被忽略的输出是PHP关闭?>;后的新行。当?>;是文件中的最后一个内容时,忽略它被认为是一种标准做法。同样,此警告的另一个常见原因是当打开的<;?PHP前面有一个空格、行或不可见字符时,导致eb服务器发送头和空格/换行符,因此当PHP开始解析时将无法提交任何头
如果文件中有多个<;?php…?>;代码块,则它们之间不应存在任何空格。(注意:如果有自动构造的代码,则可能有多个块)
还要确保代码中没有任何字节顺序标记,例如,当脚本的编码为UTF-8 with BOM时
相关问题:
- PHP已发送的标题
- Stackoverflow上的所有PHP“标题已发送”问题
- 字节顺序标记
- 什么PHP函数创建输出