PHP錯誤解釋 - 什麼是這個錯誤在PHP中的意義?
P粉436410586
P粉436410586 2023-08-20 19:36:42
0
1
404


这是什么?

这是关于在编写PHP时可能遇到的警告、错误和通知的一系列答案,如果你不知道如何修复它们。这也是一个社区维基,所以每个人都被邀请参与到这个列表的添加和维护中。

为什么会有这个?

像“Headers already sent”或“Calling a member of a non-object”这样的问题经常在Stack Overflow上出现。这些问题的根本原因总是相同的。因此,对这些问题的答案通常会重复说明它们,然后展示给OP在他们特定情况下需要更改的行。这些答案对网站没有任何价值,因为它们只适用于OP的特定代码。其他遇到相同错误的用户无法轻松地从中阅读到解决方案,因为它们过于局限。这很遗憾,因为一旦你理解了根本原因,修复错误就很简单。因此,这个列表试图以一种通用的方式解释解决方案。

我应该在这里做什么?

如果你的问题被标记为这个问题的重复,请在下面找到你的错误信息并将修复方法应用到你的代码中。答案通常包含进一步的链接,以便在只有通用答案的情况下进行调查。

如果你想做出贡献,请在每个答案中添加你的“最喜欢”的错误信息、警告或通知,以及它的简短描述(即使只是突出显示与其手册页面相关的术语)、可能的解决方法或调试方法,以及有价值的现有问题和答案的列表。同时,欢迎改进任何现有答案。

列表

  • 什么也看不见。页面是空白的。(也称为白屏死亡
  • 代码不运行/看起来我的PHP代码的部分被输出
  • 警告:无法修改头信息 - 头部已发送
  • 警告:mysql_fetch_array()期望参数1为资源,但给定的是布尔值,也就是说,警告:mysql_fetch_array()的参数不是有效的MySQL结果资源
  • 警告:[function]期望参数1为资源,但给定的是布尔值
  • 警告:[function]:无法打开流:[reason]
  • 警告:open_basedir限制生效
  • 警告:除以零
  • 警告:非法字符串偏移量 'XXX'
  • 警告:count()的参数必须是数组或实现Countable接口的对象
  • 解析错误:语法错误,意外的 '['
  • 解析错误:语法错误,意外的T_XXX
  • 解析错误:语法错误,意外的T_ENCAPSED_AND_WHITESPACE
  • 解析错误:语法错误,意外的T_PAAMAYIM_NEKUDOTAYIM
  • 解析错误:语法错误,意外的'require_once'(T_REQUIRE_ONCE),期望函数(T_FUNCTION)
  • 解析错误:语法错误,意外的T_VARIABLE
  • 致命错误:分配的内存大小为XXX字节已用尽(尝试分配XXX字节)
  • 致命错误:超过了XX秒的最大执行时间
  • 致命错误:调用非对象或null的成员函数...
  • 致命错误:调用未定义的函数XXX
  • 致命错误:无法重新声明XXX
  • 致命错误:无法在写上下文中使用函数返回值
  • 致命错误:AAA::BBB()的声明必须与CCC::BBB()兼容
  • AAA::BBB()的返回类型应与CCC::BBB()兼容,或者应使用#[ReturnTypeWillChange]属性
  • 致命错误:在非对象上下文中使用$this
  • 致命错误:无法将Closure类的对象转换为字符串
  • 致命错误:未定义的类常量
  • 致命错误:未捕获的TypeError:参数#n必须是类型x,给定的是y
  • 注意:数组转换为字符串(< PHP 8.0),或警告:数组转换为字符串(>= PHP 8.0)
  • 注意:尝试获取非对象属性的错误
  • 注意:未定义的变量或属性
  • “注意:未定义的索引”,或“警告:未定义的数组键”
  • 注意:未定义的偏移XXX [参考]
  • 注意:未初始化的字符串偏移量:XXX
  • 注意:使用未定义的常量XXX - 假定'XXX' / 错误:未定义的常量XXX
  • MySQL:您的SQL语法有误;请检查与您的MySQL服务器版本相对应的手册,以了解正确的语法使用方式...
  • 严格标准:非静态方法[::]不应该被静态调用
  • 警告:函数期望参数X为布尔值/字符串/整数
  • HTTP错误500 - 内部服务器错误
  • 已弃用:使用花括号的数组和字符串偏移访问语法已被弃用

另外,请参见:

  • 参考 - PHP中的这个符号代表什么?


P粉436410586
P粉436410586

全部回覆 (1)
P粉497463473

警告:無法修改頭訊息 - 頭訊息已經發送

當您的腳本嘗試向客戶端發送HTTP頭資訊時,但在此之前已經有輸出,這導致頭資訊已傳送給客戶端。

這是一個E_WARNING,它不會停止腳本的執行。

一個典型的例子是一個範本文件,如下所示:

  我的页面  ...

session_start()函數將嘗試向客戶端發送帶有會話cookie的頭資訊。但是當PHP將元素寫入輸出流時,已經發送了頭資訊。您需要將session_start()移到最前面。

您可以透過查看觸發警告的程式碼之前的行來解決此問題,並檢查輸出的位置。將任何發送頭訊息的代碼移到該代碼之前。

經常被忽略的一個輸出是在PHP的結束標記?>之後的換行符號。通常的做法是在文件的最後一行省略?>。同樣,引起此警告的另一個常見原因是在開頭的之前有一個空格、換行符或不可見字符,導致Web伺服器發送頭資訊和空白/換行符,因此當PHP開始解析時無法提交任何頭目資訊。

如果您的檔案中有多個程式碼區塊,請確保它們之間沒有任何空格。 (注意:如果您有自動產生的程式碼,可能會有多個程式碼區塊)

也要確保您的程式碼中沒有任何位元組順序標記,例如腳本的編碼為UTF-8帶BOM。

相關問題:

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!