为什么 同个方法中 echo realpath(RUNTIME_PATH); 会产生不同结果?
为了能让自定义的错误及异常处理机制能够捕获到致命错误,在thinkphp的fatalError()方法了添加了 trigger_error($e['message']);
<code>// 重新设置错误及异常处理机制 set_error_handler(array('\Think\ErrorLog','phplog')); set_exception_handler(array('\Think\ErrorLog','phplog')); </code>
<code>// 致命错误捕获 static public function fatalError() { Log::save(); if ($e = error_get_last()) { switch($e['type']){ case E_ERROR: case E_PARSE: case E_CORE_ERROR: case E_COMPILE_ERROR: case E_USER_ERROR: ob_end_clean(); // 抛出用户级别错误,让自定义的错误机制(phplog)能够捕获 trigger_error($e['message']); //自己添加的 self::halt($e); break; } } } </code>
下面是自己的错误机制
<code> public static function phplog($errno, $errstr = null, $errfile = null, $errline= null) { if($errstr === null) { //异常 $backtrace = array( 'logType' => 'exception', 'environment' => array( 'code' => $errno->getCode(), //异常代码 'message' => $errno->getMessage(), //异常消息 'file' => $errno->getFile(), //异常文件 'line' => $errno->getLine(), //异常行 'debugBacktrace' => $errno->getTrace() //异常追踪 ) ); } else if( error_reporting() ) { //常规错误 $backtrace = array( 'logType' =>'error', 'environment' => array( 'code' => $errno, 'message' => $errstr, 'file' => $errfile, 'line' => $errline, 'debugBacktrace' => debug_backtrace() //错误回溯 ) ); } else { //"@"错误 return ; } $index = iconv('UTF-8', 'UTF-8//IGNORE', $index = &$backtrace['environment']['message']); //移除无效字符 self::formatLog($backtrace); //格式化日志 $errorLevel = array( //输出日志信息 0 => 'Exception', //异常 1 => 'E_ERROR', //致命的运行时错误。错误无法恢复。脚本的执行被中断。 2 => 'E_WARNING', //非致命的运行时错误。脚本的执行不会中断。 4 => 'E_PARSE', //编译时语法解析错误。解析错误只应该由解析器生成。 8 => 'E_NOTICE', //运行时提示。可能是错误,也可能在正常运行脚本时发生。 16 => 'E_CORE_ERROR', //由 PHP 内部生成的错误。 32 => 'E_CORE_WARNING', //由 PHP 内部生成的警告。 64 => 'E_COMPILE_ERROR', //由 Zend 脚本引擎内部生成的错误。 128 => 'E_COMPILE_WARNING', //由 Zend 脚本引擎内部生成的警告。 256 => 'E_USER_ERROR', //由于调用 trigger_error() 函数生成的运行时错误。 512 => 'E_USER_WARNING', //由于调用 trigger_error() 函数生成的运行时警告。 1024 => 'E_USER_NOTICE', //由于调用 trigger_error() 函数生成的运行时提示。 2048 => 'E_STRICT', //运行时提示。对增强代码的互用性和兼容性有益。 4096 => 'E_RECOVERABLE_ERROR', //可捕获的致命错误。 8192 => 'E_DEPRECATED', //运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 16384 => 'E_USER_DEPRECATED', //用户产少的警告信息。 30719 => 'E_ALL', //所有的错误和警告,除了 E_STRICT。 ); $temp = htmlentities($index, ENT_QUOTES, 'UTF-8'); self::writeLog($backtrace, 'php', "<font style="display:block; color:#F00; font-weight:bold;">{$errorLevel[$backtrace['environment']['code']]} : \"<pre style="display: inline;">{$temp}
回复内容:
为了能让自定义的错误及异常处理机制能够捕获到致命错误,在thinkphp的fatalError()方法了添加了 trigger_error($e['message']);
<code>// 重新设置错误及异常处理机制 set_error_handler(array('\Think\ErrorLog','phplog')); set_exception_handler(array('\Think\ErrorLog','phplog')); </code>
<code>// 致命错误捕获 static public function fatalError() { Log::save(); if ($e = error_get_last()) { switch($e['type']){ case E_ERROR: case E_PARSE: case E_CORE_ERROR: case E_COMPILE_ERROR: case E_USER_ERROR: ob_end_clean(); // 抛出用户级别错误,让自定义的错误机制(phplog)能够捕获 trigger_error($e['message']); //自己添加的 self::halt($e); break; } } } </code>
下面是自己的错误机制
<code> public static function phplog($errno, $errstr = null, $errfile = null, $errline= null) { if($errstr === null) { //异常 $backtrace = array( 'logType' => 'exception', 'environment' => array( 'code' => $errno->getCode(), //异常代码 'message' => $errno->getMessage(), //异常消息 'file' => $errno->getFile(), //异常文件 'line' => $errno->getLine(), //异常行 'debugBacktrace' => $errno->getTrace() //异常追踪 ) ); } else if( error_reporting() ) { //常规错误 $backtrace = array( 'logType' =>'error', 'environment' => array( 'code' => $errno, 'message' => $errstr, 'file' => $errfile, 'line' => $errline, 'debugBacktrace' => debug_backtrace() //错误回溯 ) ); } else { //"@"错误 return ; } $index = iconv('UTF-8', 'UTF-8//IGNORE', $index = &$backtrace['environment']['message']); //移除无效字符 self::formatLog($backtrace); //格式化日志 $errorLevel = array( //输出日志信息 0 => 'Exception', //异常 1 => 'E_ERROR', //致命的运行时错误。错误无法恢复。脚本的执行被中断。 2 => 'E_WARNING', //非致命的运行时错误。脚本的执行不会中断。 4 => 'E_PARSE', //编译时语法解析错误。解析错误只应该由解析器生成。 8 => 'E_NOTICE', //运行时提示。可能是错误,也可能在正常运行脚本时发生。 16 => 'E_CORE_ERROR', //由 PHP 内部生成的错误。 32 => 'E_CORE_WARNING', //由 PHP 内部生成的警告。 64 => 'E_COMPILE_ERROR', //由 Zend 脚本引擎内部生成的错误。 128 => 'E_COMPILE_WARNING', //由 Zend 脚本引擎内部生成的警告。 256 => 'E_USER_ERROR', //由于调用 trigger_error() 函数生成的运行时错误。 512 => 'E_USER_WARNING', //由于调用 trigger_error() 函数生成的运行时警告。 1024 => 'E_USER_NOTICE', //由于调用 trigger_error() 函数生成的运行时提示。 2048 => 'E_STRICT', //运行时提示。对增强代码的互用性和兼容性有益。 4096 => 'E_RECOVERABLE_ERROR', //可捕获的致命错误。 8192 => 'E_DEPRECATED', //运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 16384 => 'E_USER_DEPRECATED', //用户产少的警告信息。 30719 => 'E_ALL', //所有的错误和警告,除了 E_STRICT。 ); $temp = htmlentities($index, ENT_QUOTES, 'UTF-8'); self::writeLog($backtrace, 'php', "<font style="display:block; color:#F00; font-weight:bold;">{$errorLevel[$backtrace['environment']['code']]} : \"<pre style="display: inline;">{$temp}

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。
