Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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/Zend:如何强制浏览器不使用';不在网页上显示特定案例的警告?_Php_Zend Framework_Warnings_Httprequest - Fatal编程技术网

PHP/Zend:如何强制浏览器不使用';不在网页上显示特定案例的警告?

PHP/Zend:如何强制浏览器不使用';不在网页上显示特定案例的警告?,php,zend-framework,warnings,httprequest,Php,Zend Framework,Warnings,Httprequest,我正在尝试获得如下twitter更新: try { $doc = new DOMDocument(); $doc->load('http://twitter.com/statuses/user_timeline/1234567890.rss'); $isOK = true; } catch( Zend_Exception $e ) { $isOK = false; } 如果互联网连接没有问题,则$isOK=true;一切就绪。但如果在加载twitter页面时出现问题,

我正在尝试获得如下twitter更新:

try {

  $doc = new DOMDocument();
  $doc->load('http://twitter.com/statuses/user_timeline/1234567890.rss');
  $isOK = true;

} catch( Zend_Exception $e ) {
  $isOK = false;
}
如果互联网连接没有问题,则$isOK=true;一切就绪。但如果在加载twitter页面时出现问题,则会显示以下警告,并且不会设置$isOK=false

警告:DOMDocument::load()[DOMDocument.load]:无法打开流:HTTP请求失败!在第120行的/var/www/vcred/application/controllers/IndexController.php中找不到HTTP/1.1 404

在任何情况下,我都不想在我的网页上看到上述警告。有什么想法吗

谢谢

在任何生产现场都应该这样设置。
用户根本不应该被允许查看系统错误消息。有几个选项:

这和

$oldLevel = error_reporting(0);
$doc->load('http://twitter.com/statuses/user_timeline/1234567890.rss');
error_reporting($oldLevel);
通常不赞成用这种方式抑制错误,因为这样会使代码更难调试。正如“弹片”所指出的,您无论如何都希望禁用生产系统上所有错误消息的公共显示。鼓励您在开发系统上使用,这将启用
E_ALL
E_STRICT

如果要使用,还可以通过执行以下操作更改默认值并将所有错误转换为异常

function myErrorHandler($errno, $errstr, $errfile, $errline) {
    throw new Exception($errstr, $errno);
}
set_error_handler("myErrorHandler");
不过,这是一个全球性的变化,影响到所有提出的问题。您还必须在代码中使用
catch(Exception$e)
而不是
Zend_Exception
,但它会起作用。请注意,上面的内容将转换所有内容,甚至是通知,因此如果您稍后尝试访问此内容,您还将得到一个关于
$isOk
未定义的异常。您可以根据自己的喜好随意调整处理程序,并查看详细信息

另一个全局更改是更改应用程序文件夹中的application.ini,例如让Zend Framework控制错误处理:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
根据你的需要改变这些。它们与PHP.ini中的相同,例如

:

这决定了错误是作为输出的一部分打印到屏幕上,还是对用户隐藏

:

即使启用了display_errors,也不会显示PHP启动序列中发生的错误。强烈建议关闭“显示\启动\错误”,调试除外


与采埃孚无关,是吗?您使用的是DOM,而不是Zend_Service_Twitter。我在控制器/操作中使用DOM,因此我认为Zend try-catch可能有问题。try/catch对ZF来说也没有什么特别的。看见您得到警告的原因是:如果将空字符串作为文件名传递或命名为空文件,将生成警告。此警告不是由libxml生成的,不能使用libxml的错误处理函数来处理。-好啊无论如何你有没有办法解决这个问题而不封锁所有警告。@Gordon如何才能将你的答案添加到我的偏好中!?;)但是……您忘记了编写
ini\u set
,.htaccess,并使用默认错误报告级别的源代码更改重新编译PHP;)@武信,谢谢。我认为我们无法给出答案。弹片已经提到过了,所以我没有。重复别人说的话没有用,除非它含有新的意思。此外,我的回答一般不打算涵盖所有可能的解决方案。为其他答案留出了一些空间:)考虑过将您的昵称更改为“PHP社区Wiki”?;)无论如何,谢谢你所有的答案,它们总是一本很好的读物。。是,此代码用于避免单页错误、通知或警告,但将此代码放入控制器。:)
function myErrorHandler($errno, $errstr, $errfile, $errline) {
    throw new Exception($errstr, $errno);
}
set_error_handler("myErrorHandler");
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1