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