有没有办法在php代码中注意到E_NOTICE?

2024-04-15

我有一个 PHP 脚本,需要执行几个小时,有时由于某些原因(例如,执行需要连接到互联网的脚本时出现网络问题等),执行过程会停止一段时间,然后做了错误的事情(当进程走向错误时它总是会导致 E_NOTICE)

我的问题是,有((任何))方法可以注意到脚本中出现警告吗?(并停止整个脚本)

我的问题有一个伪代码:

    if( ThereIs(AnyWarning) ) {
    exit("Sorry! You have 1 E_NOTICE so we should stop script!");
    }

我希望你明白我的意思:)

先感谢您!


Check 设置错误处理程序 http://php.net/manual/en/function.set-error-handler.php这将对您的要求有所帮助。您可以退出,也可以在其中记录错误。或者,如果代码重定向到错误页面中发生错误/通知,您可以添加逻辑。

<?php
/**
* Used for logging all php notices,warings and etc in a file when error reporting
* is set and display_errors is off
* @uses used in prod env for logging all type of error of php code in a file for further debugging
* and code performance
* @author Aditya Mehrotra<[email protected] /cdn-cgi/l/email-protection>
*/
error_reporting(E_ALL);
ini_set("display_errors", "off");
define('ERROR_LOG_FILE', '/var/www/error.log');

/**
* Custom error handler
* @param integer $code
* @param string $description
* @param string $file
* @param interger $line
* @param mixed $context
* @return boolean
*/
function handleError($code, $description, $file = null, $line = null, $context = null) {
    $displayErrors = ini_get("display_errors");
    $displayErrors = strtolower($displayErrors);
    if (error_reporting() === 0 || $displayErrors === "on") {
        return false;
    }
    list($error, $log) = mapErrorCode($code);
    $data = array(
        'level' => $log,
        'code' => $code,
        'error' => $error,
        'description' => $description,
        'file' => $file,
        'line' => $line,
        'context' => $context,
        'path' => $file,
        'message' => $error . ' (' . $code . '): ' . $description . ' in [' . $file . ', line ' . $line . ']'
    );
    return fileLog($data);
}

/**
* This method is used to write data in file
* @param mixed $logData
* @param string $fileName
* @return boolean
*/
function fileLog($logData, $fileName = ERROR_LOG_FILE) {
    $fh = fopen($fileName, 'a+');
    if (is_array($logData)) {
        $logData = print_r($logData, 1);
    }
    $status = fwrite($fh, $logData);
    fclose($fh);
    return ($status) ? true : false;
}

/**
* Map an error code into an Error word, and log location.
*
* @param int $code Error code to map
* @return array Array of error word, and log location.
*/
function mapErrorCode($code) {
    $error = $log = null;
    switch ($code) {
        case E_PARSE:
        case E_ERROR:
        case E_CORE_ERROR:
        case E_COMPILE_ERROR:
        case E_USER_ERROR:
            $error = 'Fatal Error';
            $log = LOG_ERR;
            break;
        case E_WARNING:
        case E_USER_WARNING:
        case E_COMPILE_WARNING:
        case E_RECOVERABLE_ERROR:
            $error = 'Warning';
            $log = LOG_WARNING;
            break;
        case E_NOTICE:
        case E_USER_NOTICE:
            $error = 'Notice';
            $log = LOG_NOTICE;
            break;
        case E_STRICT:
            $error = 'Strict';
            $log = LOG_NOTICE;
            break;
        case E_DEPRECATED:
        case E_USER_DEPRECATED:
            $error = 'Deprecated';
            $log = LOG_NOTICE;
            break;
        default :
            break;
    }
    return array($error, $log);
}

//calling custom error handler
set_error_handler("handleError");

print_r($arra); //undefined variable
print_r($dssdfdfgg); //undefined variable
include_once 'file.php'; //No such file or directory
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在php代码中注意到E_NOTICE? 的相关文章

  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • PHP 用星号替换所有字符

    假设我有一个字符串形式的密码 password thisisaplaintextpassword 我怎样才能把它变成下面的样子 password 我想通过电子邮件向用户发送他们的帐户详细信息 但不想发送整个内容 Use 字符串重复 http
  • 如何检查号码是否是巴基斯坦用户的手机号码而不是固定电话号码

    我所做的是从开头删除 92 或 0092 并使用以下代码检查它是否是巴基斯坦人的有效手机号码 if preg match 3 0 4 0 9 number 1 Pakistani mobile number else not a pakis
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • php表格:每行显示3个单元格[重复]

    这个问题在这里已经有答案了 我看这里 数组放入每行 5 个单元格的表格中 https stackoverflow com questions 9099568 array into a table with 5 cells in each r
  • cURL 错误 77:设置证书验证位置时出错:CAfile

    我正在使用 Firebase php SDKlink https firebase php readthedocs io en latest index html并在 Windows 10 上的 XAMPP 服务器上使用 laravel 最
  • session_regenerate_id 没有创建新的会话 id

    我有一个脚本 旨在完成当前会话并开始新的会话 我使用了一段代码 它在我的开发计算机上运行良好 但是 当我将其发布到生产服务器时 会话 ID 始终保持不变 以下是我重新启动会话的代码 session start SESSION array P
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将

随机推荐

  • 如何使用多个类从 QDialog 获取值

    我目前正在 Nuke 11 的一个面板中工作 该面板打开一个 QDialog 我想知道当我关闭 QDialog 时如何从它获取一个值到我的主类中 QDialog 属于不同的类 这是一个显示我的问题的简化示例 import nuke from
  • 如何将 ResultSet 转换为 Object[] 并检索数据

    我有一个List
  • 如何使用和应用 JavaScript 装饰器?

    我试图了解如何在一段非常简单的代码中使用装饰器 这样我就可以将这个概念应用到我更大的项目中 从 Addy Osmani 的文章中得到启发here https medium com google developers exploring es
  • 网站所有者错误:网站密钥无效

    我创建了一个 reCAPTCHA 密钥并禁用Verify the origin of reCAPTCHA solutions 但我仍然遇到错误ERROR for site owner Invalid site key 我该如何解决 同样在这
  • Hartl 教程中的 bundle exec rspec spec/requests/static_pages_spec.rb 不起作用

    我正在按照 Michael Hartl 的 ruby on Rails 教程来测试示例应用程序 3 2 1 测试驱动开发 但在输入后出现以下错误bundle exec rspec spec requests static pages spe
  • Sublime Text 3 - 特定于语言的 Goto 定义键盘快捷键

    如何根据我正在使用的语言设置 Goto Definition 工作 例如 在 Python 中 我想使用 PythonIDE 的 go to 定义 keys ctrl d command python goto definition 而且
  • 如何减小 Android 上的 expo/react-native 应用程序的大小

    我正在通过使用 React Native 和 Expo 来开发一个小型词典应用程序 当我编译为 Apk 文件时 大小可达 30mb 安装到设备上后 大小可达 80mb 这是正常的吗 有什么方法可以减小应用程序的大小吗 感谢你们 对于使用 e
  • 使用随机盐改进密码散列

    我正在创建一个网站 并尝试决定如何加密用户密码以将其存储在 SQL 数据库中 我意识到使用简单的 md5 密码 是非常不安全的 我正在考虑使用 sha512 password salt 并且我一直在研究生成有用盐的最佳方法 我读过很多文章
  • 是否可以防止 getServerSideProps 在初始加载后导致整个页面重新加载?

    我有一个服务器渲染的 next js 应用程序 它是一个 3 页的结账流程 在第一页上 我正在获取各种设置数据 例如标签翻译和里面的购物篮商品getServerSideProps 如下 用户详细信息 js import React from
  • 将函数应用于数组的简单方法

    我知道array walk and array map 但是 当像这样使用前者时 在旧项目上 它失败了 array walk POST mysql real escape string 警告 mysql real escape string
  • Laravel Eloquent 按最新记录分组

    我正在尝试获取表上单个客户的最新记录 例子 ID Customer City Amount 1 Cust001 City1 2 2 Cust001 City2 3 3 Cust001 City1 1 4 Cust001 City2 1 5
  • 关于 Java 中文件加密性能的建议

    我正在做一些文件加密相关的工作 我能够加密 解密文件 但面临主要的性能问题 当我简单地读取 写入 700 MB 大小的视频文件时 我的代码的执行速度约为 27 28 MB s 但是当我执行加密时 我目前正在使用 PBEWithMD5AndD
  • 如果我的地图需要小而不是快,我应该使用 Map 的哪种实现?

    我习惯使用HashMap在我的程序中 因为我知道它通常是最有效的 如果使用得当 并且可以轻松处理大型地图 我知道关于EnumMap这对于枚举键非常有用 但我经常生成一个小地图 它永远不会变得很大 很可能很快就会被丢弃 并且没有并发问题 Is
  • 如何动态添加表格行,包括具有不同 ID 的文本框和选择框

    我开发了一个表 它具有在按下按钮时动态生成表格行的功能 但在添加新行时我无法添加选择框 我怎样才能做到这一点 下面列出了 HTML 和 JS 代码 function addRow tableID var table document get
  • 如何在发布之前将取消令牌插入 ReactiveX 流(IObservable)?

    如何将取消令牌插入现有的IObservable调用前的管道Publish在其上 即 在它成为IConnectableObservable 在订阅它之前 这必须是冷可观察管道的一部分 否则 我可以传递一个CancellationToken令牌
  • JAXB Java 7 与 Java 8 的差异

    我发现在 Java 7 上处理 Jaxb 与在 Java 8 上处理 Jaxb 之间存在另一个区别 我已将问题简化为一个简化的示例 并且代码应作为单个类运行 更改了类别 因此它与工作无关等 当 Unmarshaller 调用列表的 sett
  • IntelliJ读取远程服务器日志文件

    您知道如何设置远程配置以在服务器而不是本地计算机上显示日志文件吗 在编辑配置屏幕 日志 选项卡 上 我可以选择显示日志文件 但仅记录来自我的计算机的日志 而不是来自远程服务器的日志 我不介意是否必须为其安装任何插件 但到目前为止我找不到任何
  • 将非 unicode、非英语内容转换为 unicode

    我有一个 xyz 语言的文本内容 p style font family xyz eWvS kmwkMns kq t mWmb KmeIvkn kocokns aq mw Xn v p It will not display correct
  • Rails 3.1应用程序部署教程

    我正在寻找一个关于服务器上 Rails 3 1 1 应用程序的良好部署教程 我所说的 好 实际上是指 完整 我发布这个问题的原因是 尽管网络上有大量教程 谷歌 博客 书籍 其他 stackoverflow 问题等 但它们似乎都集中在部署过程
  • 有没有办法在php代码中注意到E_NOTICE?

    我有一个 PHP 脚本 需要执行几个小时 有时由于某些原因 例如 执行需要连接到互联网的脚本时出现网络问题等 执行过程会停止一段时间 然后做了错误的事情 当进程走向错误时它总是会导致 E NOTICE 我的问题是 有 任何 方法可以注意到脚