Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:我们如何禁用生产网站上的异常消息并将其保存在开发环境中?_Php_Zend Framework_Exception_Exception Handling - Fatal编程技术网

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或
    .htaccess
    config中的ini设置
  • 通过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