标签: error-reporting

PHP中的集中错误报告

有没有办法在PHP中集中处理错误报告?我希望通过电子邮件通知我的申请引发的所有错误.

在整个应用程序中实现此目的的最佳方法是什么?

谢谢

php error-reporting

4
推荐指数
2
解决办法
895
查看次数

PHP PDO错误消息作为要在电子邮件中发送的变量

在PHP中从MySQL切换到PDO.在过去,当一个查询被运行并且由于某种原因没有被执行时,我能够向自己发送一封包含mysql_error()消息的电子邮件,如下所示:

$query = "SELECT dogs FROM animals";
$res = mysql_query($query);

if (!$res) {
    $error = "Error Message: " . mysql_error();
    mail("my@email.com","Database Error",$error);
}
Run Code Online (Sandbox Code Playgroud)

从那时起,当网站上的数据库出现问题时,我会被emil警告.

我的PDO设置如下:

setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
Run Code Online (Sandbox Code Playgroud)

我有一个尝试catch在PDO连接本身,但我想得到准备和执行的错误消息,因为它们发生如下:

$query = "SELECT cats FROM animals";
$sql = $pdo->prepare($query);

if (!$sql->execute()) {
  $error = "Error Message: " . (pdo error message here);
  mail("my@email.com","Database Error",$error);
}
Run Code Online (Sandbox Code Playgroud)

有关如何在电子邮件主题中分配PDO错误消息的任何想法?如果准备失败使用errorInfo()但是执行错误(例如数组的无效参数计数),我能够得到一条逻辑错误消息,我似乎无法收到错误消息.

感谢您的帮助.

php mysql error-handling pdo error-reporting

4
推荐指数
1
解决办法
1907
查看次数

更改错误日志输出格式:ini_set('error_append_string', 'string') 和 ini_set('error_prepend_string', 'string') 什么都不做

这就是我告诉 php 要做的:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', 1);
ini_set('error_log', 'errors.log');
ini_set('error_append_string', 'APP');
ini_set('error_prepend_string', 'PRE');
?>
Run Code Online (Sandbox Code Playgroud)

希望我能在一个文件中报告所有错误,在消息之前使用“PRE”,在消息之后使用“APP”。(我的目标是将 PRE 和 APP 变成 /n /r 之类的……)

但我的错误报告日志如下所示:

[14-May-2013 00:16:26] PHP 通知:未定义变量:第 14 行 /home/www/dir/index.php 中的 nonexistentvariable [14-May-2013 00:16:28] PHP 通知:未定义变量:第 14 行 /home/www/dir/index.php 中不存在变量

没有PRE,没有APP...

我如何将它放入那里,以便我的错误报告文件将每个错误都放在换行符上,而不是一串对我没有帮助的错误?

编辑: 所以我注意到 ini_set('display_errors', '1'); “APP”和“PRE”字符串是显示在页面上的错误消息中。

这意味着我真的需要找出我可以在哪里更改 php 如何记录错误的格式。例如整个时间戳的事情 - 在哪里指定?

编辑: 无法更改 php 记录错误的方式,您必须制作自己的错误处理程序。

回答: 为了真正实现我的目标,我提出了一个不同的问题(更准确地说)。 如何更改 PHP 在错误日志文件中写入错误的方式?

php error-reporting

4
推荐指数
1
解决办法
3914
查看次数

如何从Sentry错误报告中过滤掉敏感的Django POST参数?

引用Django文档

@sensitive_post_parameters('pass_word', 'credit_card_number')
def record_user_profile(request):
    UserProfile.create(user=request.user,
                       password=request.POST['pass_word'],
                       credit_card=request.POST['credit_card_number'],
                       name=request.POST['name'])
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,pass_word和credit_card_number POST参数的值将被隐藏,并在错误报告内的请求表示中用星号(******)替换,而name参数的值将被公开。

要在错误报告中系统地隐藏请求的所有POST参数,请不要向sensitive_post_parameters装饰器提供任何参数:

@sensitive_post_parameters()
def my_view(request):
    ...
Run Code Online (Sandbox Code Playgroud)

作为测试,我将以下代码添加到了Django 1.6应用程序中:

views.py:

@sensitive_post_parameters('sensitive')
def sensitive(request):
    if request.method == 'POST':
        raise IntegrityError(unicode(timezone.now()))
    return render(request, 'sensitive-test.html',
          {'form': forms.SensitiveParamForm()})
Run Code Online (Sandbox Code Playgroud)

forms.py:

class SensitiveParamForm(forms.Form):
    not_sensitive = forms.CharField(max_length=255)
    sensitive = forms.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)

当我通过提交此表单时POST,我可以sensitive在Sentry报告中看到两个字段(包括)的值清除为当天。

我在这里做错了什么?我正在使用Django 1.6和Raven 3.5.2。

在此先感谢您的帮助!

django error-reporting heroku sensitive-data sentry

4
推荐指数
1
解决办法
1614
查看次数

使用spring + servlet规范进行错误处理

我有一个web-app(2.5 servlet规范),一个spring dispatcherservlet处理任何正在/ error/*上的内容和一个错误页面,配置为将其路由到/ error /这样的东西:

<servlet>
    <servlet-name>errorServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>errorServlet</servlet-name>
    <url-pattern>/erorr/*</url-pattern>
</servlet-mapping>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/erorr/</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)

和errorServlet-servelt.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/>
    <context:component-scan base-package="some.base.package"/>
    <bean id="simpleUrlController" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/*">errorController</prop>
            </props>
        </property>
    </bean>
    <bean id="errorController" class="ErrorController">
        <property name="formView" value="formView"/>
        <property name="commandClass" value="Error"/>
        <property name="commandName" value="errorNAMe"/>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>
Run Code Online (Sandbox Code Playgroud)

我需要帮助的地方:

  1. 这是否是解决错误的最佳方法.
  2. 我知道有一个SimpleMappingExceptionResolver,我可以在我的配置中声明...但我读到这个类很好,只有来自spring控制器而不是其他的例外.

error-handling spring error-reporting spring-mvc

3
推荐指数
1
解决办法
3609
查看次数

在PHP开发的错误日志中关闭通知是否被视为标准做法

我来自J2EE背景,似乎PHP开发人员通常使用以下语句来关闭和忽略通知:error_reporting(E_ALL&~E_NOTICE);

我正在使用的应用程序充满了关于未设置变量的消息?这对我来说似乎很奇怪.

php error-reporting

3
推荐指数
1
解决办法
510
查看次数

如何在.htaccess中输入多个PHP值?

我正在编辑.htaccess文件,以便对我的php.ini文件进行一些覆盖(我无法访问它).到目前为止,我已添加:

php_value max_execution_time 600
php_value error_reporting E_WARNING
php_value log_errors Off
Run Code Online (Sandbox Code Playgroud)

我正在编辑的应用程序(vTiger CRM)建议将"error_reporting"设置为"E_WARNING&~E_NOTICE".当我输入该值时,我最终得到错误500.如何添加正确的error_reporting值?谢谢.

php .htaccess crm error-reporting

3
推荐指数
1
解决办法
2729
查看次数

E_STRICT消息虽然未设置但仍被抛出

自从我的测试服务器更新到PHP 5.3.3(Debian Squeeze)后,我遇到了关于PHP中错误报告的奇怪行为.

我像这样设置error_reporting:

error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)

并通过检查设置

echo error_reporting();
Run Code Online (Sandbox Code Playgroud)

与之相呼应30719.根据php.net,这意味着"所有错误和警告,如支持,除了级别E_STRICT.".

但是在下一行(类定义abstract class formInputContainer extends formContainer implements formElementValueable { ... })中,这会产生以下消息:

严格(2048):formInputContainer :: addElement()的声明应该与formContainer :: addElement()的声明兼容

为什么E_STRICT消息虽然未设置但仍会回显?即使更改为E_ALL&~E_STRICT也无济于事.

php error-reporting

3
推荐指数
1
解决办法
5653
查看次数

禁用PHP 5.3.8中的严格标准

我在PHP中使用严格的标准选项,但我想禁用它,因为Joomla不喜欢它,我必须在我的localhost上使用Joomla.

在回答本网站上的另一个问题时,给出了这个解决方案:E_ALL & ~E_DEPRECATED & ~E_STRICT但这对我不起作用.我认为它只适用于PHP 5.4,而我使用的是5.3.8.

谁能告诉我应该用什么?我目前正在使用error_reporting(E_ALL & ~E_NOTICE).我也在使用,ini_set('display_errors')但仍然显示与严格标准相关的错误.

那么如何禁用严格的标准错误呢?

php error-reporting

3
推荐指数
2
解决办法
2万
查看次数

配置使用PHP发送到Sentry的内容

我尝试在我的非framework-php项目中设置Sentry.它就像一个魅力,但有一件事困扰着我:

代码非常不严格且容易出现问题.设想为每个用户点击发送有时50个通知哨兵似乎是一个很大的开销.(不,不幸的是,修复所有这些事情不在预算中!)

所以我的问题是:有没有办法告诉哨兵发送级别WARNING及以上的错误?

这是我的代码:

error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
require_once 'Raven/Autoloader.php';
Raven_Autoloader::register();

$client = new Raven_Client('myurl');
$error_handler = new Raven_ErrorHandler($client);
$error_handler->registerExceptionHandler();
$error_handler->registerErrorHandler();
$error_handler->registerShutdownFunction();
Run Code Online (Sandbox Code Playgroud)

php error-reporting sentry

3
推荐指数
1
解决办法
1863
查看次数