検索

ホームページ  >  に質問  >  本文

PHP のエラー リファレンス - このエラーは何を意味しますか?

<p><h3>这是什么?</h3> <p>这是关于在编写PHP代码时可能遇到的警告、错误和通知的一系列答案,如果你对如何修复它们一无所知,可以参考这个列表。这也是一个社区维基,所以每个人都可以参与其中,添加和维护这个列表。</p> <h3>为什么会有这个列表?</h3> <p>像“Headers already sent”或“Calling a member of a non-object”这样的问题在Stack Overflow上经常出现。这些问题的根本原因总是相同的。因此,对这些问题的答案通常会重复解释并显示给OP在他们特定情况下需要更改的行。这些答案对网站没有任何价值,因为它们只适用于OP的特定代码。其他遇到相同错误的用户无法轻松地从中读取解决方案,因为它们过于局限。这是令人遗憾的,因为一旦你理解了根本原因,修复错误就是微不足道的。因此,这个列表试图以一种通用的方式解释解决方案。</p> <h3>我应该在这里做什么?</h3> <p>如果你的问题被标记为这个问题的重复,请在下面找到你的错误信息并将修复方法应用到你的代码中。答案通常包含进一步的链接,以便在仅仅通过通用答案无法明确解决问题时进行调查。</p> <p>如果你想贡献,请在每个答案中添加你“最喜欢”的错误信息、警告或通知,以及它的简短描述(即使只是突出显示与它们手册页面相关的术语)、可能的解决方案或调试方法,以及有价值的现有Q&amp;A的列表。同时,欢迎改进任何现有答案。</p> <h2>列表</h2> <ul> <li>什么都看不见。页面是空白的。(也被称为<em>白屏死亡</em>)</li> <li>代码不运行/看起来我的PHP代码的部分被输出</li> <li>警告:无法修改头信息 - 头已经被发送</li> <li>警告:mysql_fetch_array()期望参数1是资源,但给定的是布尔值,也被称为</p><p> 警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源</li> <li>警告:<em>[函数]</em>期望参数1是资源,但给定的是布尔值</li> <li>警告:<em>[函数]</em>:无法打开流:<em>[原因]</em></li> <li>警告:open_basedir限制生效</li> <li>警告:除以零</li> <li>警告:非法字符串偏移量 'XXX'</li> <li>警告:count()的参数必须是一个数组或实现了Countable接口的对象</li> <li>语法错误:意外的 '['</li> <li>语法错误:意外的T_XXX</li> <li>语法错误:意外的T_ENCAPSED_AND_WHITESPACE</li> <li>语法错误:意外的T_PAAMAYIM_NEKUDOTAYIM</li> <li>语法错误:意外的'require_once'(T_REQUIRE_ONCE),期望函数(T_FUNCTION)</li> <li>语法错误:意外的T_VARIABLE</li> <li>致命错误:分配的内存大小为XXX字节,已用尽(尝试分配XXX字节)</li> <li>致命错误:超过了XX秒的最大执行时间</li> <li>致命错误:在非对象上调用成员函数...或null</li> <li>致命错误:调用未定义的函数XXX</li> <li>致命错误:无法重新声明XXX</li> <li>致命错误:无法在写上下文中使用函数返回值</li> <li>致命错误:AAA::BBB()的声明必须与CCC::BBB()兼容</li> <li>AAA::BBB()的返回类型应该与CCC::BBB()兼容,或者应该使用#[ReturnTypeWillChange]属性</li> <li>致命错误:在非对象上下文中使用$this</li> <li>致命错误:无法将闭包类的对象转换为字符串</li> <li>致命错误:未定义的类常量</li> <li>致命错误:未捕获的TypeError:参数#n必须是类型x,给定的是y</li> <li>注意:数组转换为字符串(< PHP 8.0)或警告:数组转换为字符串(>= PHP 8.0)</li> <li>注意:尝试获取非对象属性的错误</li> <li>注意:未定义的变量或属性</li> <li>“注意:未定义的索引”,或“警告:未定义的数组键”</li> <li>注意:未定义的偏移量XXX [参考]</li> <li>注意:未初始化的字符串偏移量:XXX</li> <li>注意:使用未定义的常量XXX - 假定为'XXX' / 错误:未定义的常量XXX</li> <li>MySQL:您的SQL语法错误;请检查与您的MySQL服务器版本相对应的手册以使用正确的语法...在第...行</li> <li>严格标准:非静态方法<em>[<类>::<方法>]</em>不应该被静态调用</li> <li>警告:函数期望参数X为布尔值/字符串/整数</li> <li>HTTP错误500 - 内部服务器错误</li> <li>已弃用:使用花括号的数组和字符串偏移访问语法已弃用</li> </ul> <p>另外,请参见:</p> <ul> <li>参考 - PHP中的这个符号代表什么?</li> </ul></p>
P粉894008490P粉894008490462日前535

全員に返信(1)返信します

  • P粉654894952

    P粉6548949522023-08-22 13:13:35

    警告: ヘッダー情報を変更できません - ヘッダーは送信されました

    スクリプトが HTTP ヘッダーをクライアントに送信しようとしたが、前に出力がすでに存在するため、ヘッダーはすでにクライアントに送信されている場合。

    これは E_WARNING であり、スクリプトの実行は停止されません。

    典型的な例は次のようなテンプレート ファイルです:

    リーリー

    session_start()関数は、セッション Cookie を含むヘッダーをクライアントに送信しようとします。ただし、PHP が <html> 要素を出力ストリームに書き込むとき、ヘッダーはすでに送信されています。 session_start() を先頭に移動する必要があります。

    この問題は、警告をトリガーしたコードの前のコード行を調べ、出力の場所を確認することで解決できます。ヘッダーを送信するコードをこのコードの前に移動します。

    出力で見落とされがちな部分は、PHP 終了タグ ?> の後の改行文字です。ファイル内の最後の項目である ?> を省略するのが標準的な方法であると一般的に考えられています。繰り返しになりますが、この警告が表示されるもう 1 つの一般的な原因は、開始 <?php の前にスペース、改行、または非表示の文字があり、Web サーバーがヘッダーと空白/改行文字を送信することです。 PHP のとき 解析を開始するときにヘッダーを送信できませんでした。

    ファイル内に複数の <?php ... ?>コード ブロックがある場合は、それらの間にスペースが入っていないことを確認してください。 (注: 自動生成されたコードがある場合は、複数のコード ブロックが存在する可能性があります)

    また、コード内にバイト オーダー マークがないことも確認してください。たとえば、スクリプトは BOM 付きの UTF-8 としてエンコードされています。

    関連する質問:

    返事
    0
  • キャンセル返事