PHP CLI与CGI 和 PHP日志

PHP错误跟踪,错误提示有助于,定位错误的位置,从而进行调试。与错误显示有关的命令有如下:
1、直接显示

error_reporting=ALL(错误显示级别设置)
display_errors=On|Of (是否显示错误)

2、把错误存入日志文件里

log_errors=On (开启日志显示)
error_log=D:/www/error.log (错误日志存放地址)

如果需要局部设置显示的话,可以使用
ini_set和int_get,设置和获取配置。

3、CLI与CGI的区别
    1)、CLI不会输出任何头信息。CGI可以通过配置取消header信息。 CLI通过使用参数-q或--no-header来向后兼容,使得可以使用旧的CGI
    2)、CLI不会把当前目录改为执行脚本的目录。
    3)、CLI不会输出HTML错误信息,只输出纯文本错误信息。
    4)、CLI会强制覆盖php.ini里的一些配置,覆盖操作是发生在所有的设置文件(php.ini)解析之后,所以可以在运行时修改这些配置,当然也没有什么意义。

html_errors        FALSE
implicit_flush     TRUE
max_execution_time  0
register_argc_argv  TRUE

    5)、CLI有一些预设的常量:STDIN,STDOUT,STDERR
        例子:
        输入和输入流,可以像文件一样使用fopen,fgets,fwrite进行操作。
       

        <?php
        fwrite(STDOUT, “Please enter your name\n”);
        $name = fgets(STDIN);
        fwrite(STDOUT, "Welcome $name");
        ?>
<?php set_error_handler("ErrorHandler"); function ErrorHandler($errno, $errstr, $errfile, $errline) { fwrite(STDERR,"$errstr in $errfile on $errline\n"); } $fp = fopen("demo.txt","r"); $str = fread($fp,filesize("demo.txt")); fclose($fp); fwrite(STDOUT, "Task completed successfully!"); ?>
 Tip: php error.php 2> error.log 其中error.php里所有使用fwrite(STDERR, '...')的语句,产生的输出都会录入到error.log而不会显示到标准输出中去。注意1 =》STDOUT

    参考资源:http://php.net/manual/zh/features.commandline.php
   
   

posted @ 2012-11-30 11:04  luffy_zhong  阅读(2962)  评论(0编辑  收藏  举报