V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nilai
V2EX  ›  PHP

一个php log_error问题

  •  
  •   nilai · 2013-09-09 14:00:35 +08:00 · 2880 次点击
    这是一个创建于 4082 天前的主题,其中的信息可能已经有所发展或是发生改变。
    php.ini如下 设置
    log_errors = On
    error_log = /tmp/log.txt
    error_reporting=E_ALL


    现假设有如下PHP代码
    <?php
    @asdfasdfasdfasdfasdfasdfasdfasdf();
    ?>

    现在这样子是不保存错误记到/tmp/log.txt

    现在要求不改PHP代码的前提下怎么把错误记录记到/tmp/log.txt中
    5 条回复    1970-01-01 08:00:00 +08:00
    moro
        1
    moro  
       2013-09-09 17:00:36 +08:00
    会记录到错误的行数,在文件中。
    shiny
        2
    shiny  
       2013-09-09 17:05:44 +08:00
    @ 错误抑制符的作用等于把这一行的 error_reporting 变成 0。

    如果你要跟踪此类问题,你可以写个 error handler处理文件并在 php.ini 里 auto_prepend_file 加入这个文件。在错误处理程序里也会收到抑制过的错误。
    sharmy
        3
    sharmy  
       2013-09-09 17:22:05 +08:00
    貌似必须改代码哦:
    手册上写的很清楚:目前的“@”错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或者敲错了字母的函数调用前用了“@”来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里。
    holystrike
        4
    holystrike  
       2013-09-09 17:27:59 +08:00
    必须把@去掉
    加@是很不好的书写习惯,必须废止的
    picasso250
        5
    picasso250  
       2013-09-13 11:07:29 +08:00
    1. 把@去掉。
    2. 设置error_handler 如
    http://gist.github.com/picasso250/6546398
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1086 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:32 · PVG 03:32 · LAX 11:32 · JFK 14:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.