在php 5.4中,我的代码无法正常工作。我用西里尔字母。简而言之:
throw new Exception('Сообщение');
将输出:
致命错误:在test.php中......
虽然结果如下:
致命错误:未捕获的异常'异常'有消息......
如果我不使用西里尔字符,结果是好的。而且,如果我在5.3中运行此代码,我将得到正确的结果。 I. e。如果我使用西里尔语,结果消息是空字符串。
答案 0 :(得分:0)
在例外情况下,报告了非utf-8字符的问题。尝试将消息转换为utf-8,如下所示:
throw new Exception(utf8_encode('Сообщение'));
如果不起作用,请尝试以下方法:
$message = 'Сообщение';
$message = mb_convert_encoding($message, 'Windows-1251', 'UTF-8');
throw new Exception($message);
- 编辑 -
实际问题不是没有存储异常消息,而是 - 异常未正确显示。在PHP 5.3中,xdebug默认情况下没有打开,在PHP 5.4中,它是。 xdebug设置为以UTF-8显示所有内容,并且您的消息可能在某些其他字符集中编码,因此消息无法正确呈现。
如果您滚动到this页面的底部,您会找到一条引用此问题的评论。
PHP自己在here
上跟踪了这个问题This stackoverflow thread也与同一问题有关。
您可以通过将xdebug编码设置为非utf-8字符集来逃脱。请read the xdebug manual regarding this