찾다

 >  Q&A  >  본문

PHP 오류 설명 - PHP에서 이 오류는 무엇을 의미합니까?

<p><br /></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>如果你想做出贡献,请在每个答案中添加你的“最喜欢”的错误信息、警告或通知,以及它的简短描述(即使只是突出显示与其手册页面相关的术语)、可能的解决方法或调试方法,以及有价值的现有问题和答案的列表。同时,欢迎改进任何现有答案。</p> <h2>列表</h2> <ul> <li>什么也看不见。页面是空白的。(也称为<em>白屏死亡</em>)</li> <li>代码不运行/看起来我的PHP代码的部分被输出</li> <li>警告:无法修改头信息 - 头部已发送</li> <li>警告:mysql_fetch_array()期望参数1为资源,但给定的是布尔值,也就是说,警告:mysql_fetch_array()的参数不是有效的MySQL结果资源</li> <li>警告:<em>[function]</em>期望参数1为资源,但给定的是布尔值</li> <li>警告:<em>[function]</em>:无法打开流:<em>[reason]</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>致命错误:无法将Closure类的对象转换为字符串</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>[<class>::<method>]</em>不应该被静态调用</li> <li>警告:函数期望参数X为布尔值/字符串/整数</li> <li>HTTP错误500 - 内部服务器错误</li> <li>已弃用:使用花括号的数组和字符串偏移访问语法已被弃用</li> </ul> <p>另外,请参见:</p> <ul> <li>参考 - PHP中的这个符号代表什么?</li> </ul><p><br /></p>
P粉436410586P粉436410586495일 전502

모든 응답(1)나는 대답할 것이다

  • P粉497463473

    P粉4974634732023-08-21 11:59:37

    경고: 헤더 정보를 수정할 수 없습니다. 헤더 정보가 이미 전송되었습니다

    스크립트가 클라이언트에 HTTP 헤더를 보내려고 하는데 이전에 이미 출력이 있는 경우 헤더가 이미 클라이언트에 전송된 것입니다.

    이것은 E_WARNING이며 스크립트 실행을 중지하지 않습니다.

    대표적인 예는 아래와 같은 템플릿 파일입니다.

    으아악

    session_start()函数将尝试向客户端发送带有会话cookie的头信息。但是当PHP将<html>元素写入输出流时,已经发送了头信息。您需要将session_start()앞으로 이동합니다.

    경고를 발생시키는 코드 앞의 줄을 보고 출력 위치를 확인하면 이 문제를 해결할 수 있습니다. 헤더 정보를 보내는 코드를 이 코드 앞으로 이동하세요.

    종종 간과되는 출력 중 하나는 PHP의 닫는 태그 앞에 있는 공백, 줄 바꿈 또는 보이지 않는 문자입니다. ?>之后的换行符。通常的做法是在文件的最后一行省略?>。同样,引起此警告的另一个常见原因是在开头的<?php 이로 인해 웹 서버가 공백/줄 바꿈과 함께 헤더를 보내므로 PHP가 시작될 때 헤더를 제출할 수 없습니다. 파싱.

    파일에 <?php ... ?>코드 블록이 여러 개 있는 경우 그 사이에 공백이 없어야 합니다. (참고: 자동 생성된 코드가 있는 경우 코드 블록이 여러 개 있을 수 있습니다)

    또한 코드에 바이트 순서 표시가 없는지 확인하세요. 예를 들어 스크립트는 BOM이 있는 UTF-8로 인코딩됩니다.

    관련 질문:

    회신하다
    0
  • 취소회신하다