这是一些关于您在 PHP 编程时可能遇到的警告、错误和通知的答案,但不知道如何修复它们。这也是一个社区 Wiki,因此邀请每个人参与添加和维护此列表。
诸如“标头已发送”或“调用非对象的成员”之类的问题经常出现在 Stack Overflow 上。这些问题的根本原因总是相同的。因此,这些问题的答案通常会重复它们,然后向操作员展示在特定情况下要更改哪一行。这些答案不会给网站增加任何价值,因为它们仅适用于 OP 的特定代码。其他有相同错误的用户无法轻松地从中读出解决方案,因为它们太本地化了。这是可悲的,因为一旦你了解了根本原因,修复错误就变得微不足道了。因此,此列表试图以通用的应用方式解释该解决方案。
如果您的问题已被标记为与此问题重复,请在下面找到您的错误消息并将修复应用于您的代码。答案通常包含进一步调查的链接,以防仅从一般答案中不清楚。
如果您想做出贡献,请添加您“最喜欢的”错误消息、警告或通知,每个答案一个,简短描述其含义(即使只是在其手册页中突出显示术语),可能的解决方案或调试方法以及有价值的现有问答列表。另外,请随意改进任何现有答案。
警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源
另请参阅:
Amaran: Tidak dapat mengubah suai maklumat pengepala - pengepala sudah dihantar
Ini berlaku apabila skrip anda cuba menghantar pengepala HTTP kepada klien tetapi sudah ada output sebelum ini, menyebabkan pengepala telah dihantar kepada klien.
Ini adalah
E_WARNING
dan ia tidak menghalang skrip.Contoh biasa ialah fail templat seperti ini:
session_start()
函数将尝试将带有会话 cookie 的标头发送到客户端。但是 PHP 在将元素写入输出流时已经发送了标头。您必须将
session_start()
Bergerak ke atas.Anda boleh menyelesaikan masalah ini dengan melihat baris sebelum kod yang mencetuskan amaran dan menyemak di mana ia dikeluarkan. Alihkan sebarang kod penghantaran pengepala sebelum kod ini.
Output yang sering diabaikan ialah penghujung PHP
?>
之后的新行。当?>
是文件中的最后一个内容时,省略它被认为是一种标准做法。同样,此警告的另一个常见原因是当开头的apabila didahului oleh ruang, baris atau aksara yang tidak kelihatan, menyebabkan pelayan web menghantar pengepala dan ruang/baris baharu, jadi apabila PHP mula menghuraikan ia tidak akan dapat menyerahkan sebarang pengepala.
Jika anda mempunyai berbilang
blok kod dalam fail anda, tidak sepatutnya terdapat sebarang ruang di antaranya. (Nota: Jika anda mempunyai kod yang dibina secara automatik, anda mungkin mempunyai berbilang blok)
Juga pastikan anda tidak mempunyai sebarang tanda pesanan bait dalam kod anda, seperti apabila skrip dikodkan sebagai UTF-8 dengan BOM.
Soalan berkaitan: