这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.
Stack Overflow上经常弹出诸如"已发送标头"或"调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.
如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.
如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.
另外,请参阅
在 PHP 7.4.0 中,我看到以下警告:
Deprecated: Array and string offset access syntax with curly braces is deprecated in ...
我的错误/异常处理程序无法捕获并记录它们。
例子:
<?php
set_error_handler(function ($errNo, $errStr) {
echo "set_error_handler: " . $errStr;
});
set_exception_handler(function ($exception) {
echo "set_exception_handler: " . $exception->getMessage();
});
$b = 'test';
$a = $b{1};
Run Code Online (Sandbox Code Playgroud)
警告仍然显示在正常输出中,并且两个处理程序都没有被调用。
我想在我自己的日志中记录所有错误、异常和警告,但处理程序未捕获此警告。是否有原因或解决方案来捕获和记录 PHP 抱怨的所有内容(无法访问服务器 Apache/PHP 日志)?
我刚刚更新了我phpexcel的phpspreadsheet,我注意到这个错误弹出:
ErrorException (E_DEPRECATED) 不推荐使用带花括号的数组和字符串偏移访问语法
需要“类/PHPExcel.php”;
这是我的代码的一部分,它触发了上述错误:
文件: project/public/Classes/PHPExcel/Shared/ZipStreamWrapper.php
public function stream_open($path, $mode, $options, &$opened_path)
{
// Check for mode
if ($mode{0} != 'r') { //Error Line
throw new PHPExcel_Reader_Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
}
Run Code Online (Sandbox Code Playgroud)
文件: project/public/Classes/PHPExcel.php
/** PHPExcel root directory */
if (!defined('PHPEXCEL_ROOT')) {
define('PHPEXCEL_ROOT', dirname(__FILE__) . '/');
require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); //Error Line
}
Run Code Online (Sandbox Code Playgroud)
文件: app/Http/Controllers/analyticsAuth/statement.old.php
use PHPExcel_Reader_Excel2007;
use PHPExcel;
use PHPExcel_IOFactory;
use ZipArchive;
require 'Classes/PHPExcel.php'; //Error …Run Code Online (Sandbox Code Playgroud) 我正在尝试在PHP中从ASCII转换为HEX,但是对于一些可用的在线工具获得了不同的结果.我知道我正在寻找的结果,所以在线工具的结果似乎是正确的,我的代码不正确,但我无法解决原因.
String: 2Ffbj?DoyXOU
Correct output: 32 46 66 62 6a 3f 44 6f 79 58 4f 55 (from linked site above)
My output: 32 46 66 62 6a 3f 44 6f 79 58 4f 75
Run Code Online (Sandbox Code Playgroud)
我的剧本:
echo bin2hex(utf8_decode("2Ffbj?DoyXOU"));
Run Code Online (Sandbox Code Playgroud)
故障在哪里?