PHP:我们如何禁用生产网站上的异常消息并将其保存在开发环境中?
如何禁用生产网站上的异常消息并将其保存在开发人员中 例如:PHP:我们如何禁用生产网站上的异常消息并将其保存在开发环境中?,php,zend-framework,exception,exception-handling,Php,Zend Framework,Exception,Exception Handling,如何禁用生产网站上的异常消息并将其保存在开发人员中 例如: try{ //some code } catch(Exception $e){ echo $e.getMessage(); } 编辑: 它是如何在Zend Framework上实现的?(.ini文件,但是应该编写的异常代码呢?) 编辑2: 如果我的示例无法工作,zend framework如何在application.ini中禁用异常消息 resources.frontController.params.displayE
try{
//some code
}
catch(Exception $e){
echo $e.getMessage();
}
编辑: 它是如何在Zend Framework上实现的?(.ini文件,但是应该编写的异常代码呢?) 编辑2: 如果我的示例无法工作,zend framework如何在application.ini中禁用异常消息
resources.frontController.params.displayExceptions = 0
我想您的配置文件中应该有某种标志,指示安装为dev或production。然后输入echo$e.getMessage()您可以将其传递给一个函数,如果它是开发服务器,则该函数会将其打印出来,如果它是生产服务器,则该函数将保持不变。在这段代码中没有任何方法。 你必须改成代码
例如,使函数show_error()在dev上打印错误,而在prod上不执行任何操作(只是不同的实现)。如果要打印消息,可以将代码包装在一个函数(或静态类方法)中,该函数检查常量值以供开发|生产 例如:
function printMessage($Exception) {
if(DEV_ENVIRONMENT) {
echo $Exception->getMessage();
}
}
我的猜测是只更改ErrorController及其视图脚本。下面是一些随机错误。phtml:
<?php echo $this->message; ?>
<?php if ('development' == APPLICATION_ENV): ?>
<h3>Exception information:</h3>
<p>
<b>Message:</b> <?php echo $this->exception->getMessage() ?>
</p>
<h3>Stack trace:</h3>
<pre><?php echo $this->exception->getTraceAsString() ?>
</pre>
<h3>Request Parameters:</h3>
<pre><?php echo var_export($this->request->getParams(), true) ?>
</pre>
<?php endif ?>
例外信息:
信息:
堆栈跟踪:
请求参数:
因此,错误消息总是会显示出来,但关于错误本身的信息只会在开发人员上显示。我不确定我们是否正确 其他答案说明了如何抛出与环境设置有关的异常 答案很简单: 应该始终抛出异常,而不考虑环境 如果需要,您可以以不同的方式处理它们,但应该避免条件异常 您可以通过多种方式在应用程序中设置错误处理:
- apache或
config中的ini设置.htaccess
- 通过php函数使用相同的设置(例如
)错误报告()
- 配置前端控制器(使用
或在application.ini
中获取前端控制器实例)Bootstrap
- 更新ZF的默认错误处理程序
- 创建自己的错误处理程序
application.ini
:
在application.ini
的开发部分,您可以在需要时使用零
我建议使用日志应用程序资源来处理生产环境中的异常。嗯,是的,这也很好:-)谢谢!但是resources.frontController.params.displayExceptions=1是如何在zend framework中实现的呢?@Yosef只是把它放在
application.ini
中,它应该可以工作。确保您已正确配置了[development:production]
部分和应用程序_ENV
设置。默认情况下,它已经在应用程序中,我询问zend如何实现它。
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.throwExceptions = 1
resources.frontController.params.displayExceptions = 1