php源码-sapi中自定义错误输出

相信在写php代码的时候也都见过这样类似的错误提示输出

PHP Fatal error:  Unknown: EEEEEEEEEEEEEEEEEEE in Unknown on line 0
PHP Warning:  Swoole\Php\Runner::run() expects exactly 4 parameters, 0 given in /var/www/swoole/http_test.php on line 22

这个输出其实是通过 _sapi_module_struct.log_message来实现的

基本过程是这样,php抛出错误信息后,最终会调用 zend_error_cb 回调函数, 而每个sapi在启动的时候会把zend_error_cb 赋值为 php_error_cb()

其中
php_error_cb() 中会调用 php_log_err_with_severity() , 而php_log_err_with_severity() 中会调用 sapi_module.log_message()

sapi_module.log_message() 就是每个sapi自定义的 错误输出处理函数

比如fpm的sapi中的定义

//sapi/fpm/fpm/fpm_main.c 

static void sapi_cgi_log_message(char *message, int syslog_type_int)
{
    zlog(ZLOG_NOTICE, "PHP message: %s", message);
}

static sapi_module_struct cgi_sapi_module = {
    "fpm-fcgi",                     /* name */
    "FPM/FastCGI",                  /* pretty name */
    sapi_cgi_log_message,           /* Log message */
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容