服务器上的时区是:(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐我在php.ini里设置的date.timezone = "Asia/Shanghai",然后重启服务。php_errors.log文件里产生错误时记录时间总是比系统时间差了八小时。写了个测试页面:
<?php
echo date("H:i:s");
?>输出的时间与系统时间符合。请问如何设置才能让错误日志里的时间与系统时间一样呢?

解决方案 »

  1.   

    <?php 
    date_default_timezone_set("Asia/ShangHai");
    $asd=substr(date('Y-m-d H:i:s',time()),11,8);
    echo $asd;?>
      

  2.   

    ca 看错 
    你应该修改的是服务器时间吧 php不负责log吧
      

  3.   

    先把操作系统的UTC设置正确:
    http://time.is/UTC
      

  4.   

    服务器上的时区是:(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐
      

  5.   

    我用php 5.2.17版本的时候,日志和系统时间是对得上的,升到5.3后就对不上了,是不是版本也有影响?
      

  6.   

    if(function_exists('date_default_timezone_set'))date_default_timezone_set('Etc/GMT-8');
      

  7.   

    日志里时区是哪个?贴一行看看
    .htaccess查了没
      

  8.   

    设置好时区,在php.ini文件里面。
    配置文件里面有一个时区设置,默认为什么不记得了,设置为RPC就好了。
    参考:php新手入门网
      

  9.   

    他设置 Asia/Shanghai 跟你说的答案在生效的情况下会有区别吗?
      

  10.   

    日志里是这样的:[17-Jun-2012 16:46:27 UTC] PHP Notice:  Use of undefined constant action
      

  11.   

    本帖最后由 xuzuning 于 2012-06-18 09:36:36 编辑
      

  12.   

    [18-Jun-2012 02:42:21 UTC]这个是日志里的时间,而系统时间是10:44:21,慢了八小时。
      

  13.   

    UTC时间,大哥,和系统时间差8小时就对了。
      

  14.   


    php_errors.log 人家打的是gmtime,你系统时间是localtime,差8小时是正确的,你得想办法配置php_errors.log输出的是localtime就和系统时间一致了,懂吗。
      

  15.   

    一个utc,一个是utc+8,当然差8小时,我提问的时候就说过了啊,我没说这样是错误,我只是想知道怎么样样设置php_errors.log让它输出的是localtime,这样就行了。
      

  16.   

    设置用户自定义的错误处理函数(set_error_handler())与自定义的异常处理函数(set_exception_handler)。
    例如【自定义错误处理】:
    date_default_timezone_set('Asia/Shanghai');
    register_shutdown_function('my_exception_handler');  //脚本执行前加载函数到内存,等当前脚本执行完,回调自定义错误处理函数。
    function my_exception_handler()
    {
        if($e = error_get_last()) {
        //$e['type']对应php_error常量
        $message = '';
        $message .= "【".date("Y-m-d H:i:s")."】\n"
        $message .= "出错信息:\t".$e['message']."\n";
        $message .= "出错文件:\t".$e['file']."\n\n";
        $message .= "出错行数:\t".$e['line']."\n\n";
        $message .= "\t\t请工程师检查出现程序".$e['file']."出现错误的原因\n";
        $message .= "\t\t希望能引起你对程序开发过程当中出现错误原因的重视\n";
        $message .= "\t\t希望能您早点解决故障出现的原因\n";
        //sendemail to
        }
    }
      

  17.   

    文件1:【error.class.php】重写错误处理,进行文件型的日志输出,会有两个时间,第一个是格林尼治时间,第二个是北京时间,后面是错误信息,使用时候只需要包含此文件就可以了。
    文件2:【test.php】测试文件,里面有用来测试的错误语句。文件1:【error.class.php】源代码<?php
    function exceptionHandler(){
    error_reporting(E_ALL ^ E_NOTICE);
    date_default_timezone_set('Etc/GMT-8'); //设置时区

    ini_set('display_errors',0); //将错误记录到日志
    ini_set('error_log','D:\\'.date('Y-m-d').'_weblog.txt');
    ini_set('log_errors',1); //开启错误日志记录
    ini_set('ignore_repeated_errors',1); //不重复记录出现在同一个文件中的同一行代码上的错误信息。 $user_defined_err = error_get_last();
    if($user_defined_err['type'] > 0)
    {
    switch($user_defined_err['type']){
    case 1:
    $user_defined_errType = '致命的运行时错误(E_ERROR)';
    break;
    case 2:
    $user_defined_errType = '非致命的运行时错误(E_WARNING)';
    break;
    case 4:
    $user_defined_errType = '编译时语法解析错误(E_PARSE)';
    break;
    case 8:
    $user_defined_errType = '运行时提示(E_NOTICE)';
    break;
    case 16:
    $user_defined_errType = 'PHP内部错误(E_CORE_ERROR)';
    break;
    case 32:
    $user_defined_errType = 'PHP内部警告(E_CORE_WARNING)';
    break;
    case 64:
    $user_defined_errType = 'Zend脚本引擎内部错误(E_COMPILE_ERROR)';
    break;
    case 128:
    $user_defined_errType = 'Zend脚本引擎内部警告(E_COMPILE_WARNING)';
    break;
    case 256:
    $user_defined_errType = '用户自定义错误(E_USER_ERROR)';
    break;
    case 512:
    $user_defined_errType = '用户自定义警告(E_USER_WARNING)';
    break;
    case 1024:
    $user_defined_errType = '用户自定义提示(E_USER_NOTICE)';
    break;
    case 2048:
    $user_defined_errType = '代码提示(E_STRICT)';
    break;
    case 4096:
    $user_defined_errType = '可以捕获的致命错误(E_RECOVERABLE_ERROR)';
    break;
    case 8191:
    $user_defined_errType = '所有错误警告(E_ALL)';
    break;
    default:
    $user_defined_errType = '未知类型';
    break;
    }
    $msg = sprintf('%s %s %s %s %s',date("Y-m-d H:i:s"),$user_defined_errType,$user_defined_err['message'],$user_defined_err['file'],$user_defined_err['line']);
    error_log($msg,0);
    }
    } register_shutdown_function('exceptionHandler');
    ?>文件2:【test.php】<meta charset="utf-8">
    <?php
    include('error.class.php');
    echo $_COOKIE['aaaaadfa']; //此cookie不存在就会产生一个错误,用来做测试用
    echo $_SESSION['aaaaadfa']; //此session不存在就会产生一个错误,用来做测试用
    ?>测试结果:
    [01-Sep-2012 18:09:18 UTC] 2012-09-02 02:09:18 运行时提示(E_NOTICE) Undefined variable: _SESSION D:\PHP_web\XXXXXXXX\untitled.php 5
      

  18.   

    文件1:【error.class.php】重写错误处理,进行文件型的日志输出,会有两个时间,第一个是格林尼治时间,第二个是北京时间,后面是错误信息,使用时候只需要包含此文件就可以了。
    文件2:【test.php】测试文件,里面有用来测试的错误语句。文件1:【error.class.php】源代码<?php
    function exceptionHandler(){
    error_reporting(E_ALL ^ E_NOTICE);
    date_default_timezone_set('Etc/GMT-8'); //设置时区

    ini_set('display_errors',0); //将错误记录到日志
    ini_set('error_log','D:\\'.date('Y-m-d').'_weblog.txt');
    ini_set('log_errors',1); //开启错误日志记录
    ini_set('ignore_repeated_errors',1); //不重复记录出现在同一个文件中的同一行代码上的错误信息。 $user_defined_err = error_get_last();
    if($user_defined_err['type'] > 0)
    {
    switch($user_defined_err['type']){
    case 1:
    $user_defined_errType = '致命的运行时错误(E_ERROR)';
    break;
    case 2:
    $user_defined_errType = '非致命的运行时错误(E_WARNING)';
    break;
    case 4:
    $user_defined_errType = '编译时语法解析错误(E_PARSE)';
    break;
    case 8:
    $user_defined_errType = '运行时提示(E_NOTICE)';
    break;
    case 16:
    $user_defined_errType = 'PHP内部错误(E_CORE_ERROR)';
    break;
    case 32:
    $user_defined_errType = 'PHP内部警告(E_CORE_WARNING)';
    break;
    case 64:
    $user_defined_errType = 'Zend脚本引擎内部错误(E_COMPILE_ERROR)';
    break;
    case 128:
    $user_defined_errType = 'Zend脚本引擎内部警告(E_COMPILE_WARNING)';
    break;
    case 256:
    $user_defined_errType = '用户自定义错误(E_USER_ERROR)';
    break;
    case 512:
    $user_defined_errType = '用户自定义警告(E_USER_WARNING)';
    break;
    case 1024:
    $user_defined_errType = '用户自定义提示(E_USER_NOTICE)';
    break;
    case 2048:
    $user_defined_errType = '代码提示(E_STRICT)';
    break;
    case 4096:
    $user_defined_errType = '可以捕获的致命错误(E_RECOVERABLE_ERROR)';
    break;
    case 8191:
    $user_defined_errType = '所有错误警告(E_ALL)';
    break;
    default:
    $user_defined_errType = '未知类型';
    break;
    }
    $msg = sprintf('%s %s %s %s %s',date("Y-m-d H:i:s"),$user_defined_errType,$user_defined_err['message'],$user_defined_err['file'],$user_defined_err['line']);
    error_log($msg,0);
    }
    } register_shutdown_function('exceptionHandler');
    ?>文件2:【test.php】<meta charset="utf-8">
    <?php
    include('error.class.php');
    echo $_COOKIE['aaaaadfa']; //此cookie不存在就会产生一个错误,用来做测试用
    echo $_SESSION['aaaaadfa']; //此session不存在就会产生一个错误,用来做测试用
    ?>测试结果:
    [01-Sep-2012 18:09:18 UTC] 2012-09-02 02:09:18 运行时提示(E_NOTICE) Undefined variable: _SESSION D:\PHP_web\XXXXXXXX\untitled.php 5