Недавно я установил PHP 5.4 на своем Ubuntu 12.10 из apt-get.
PHP Info показывает: PHP Version 5.4.6-1ubuntu1
Я только что установил все распространенные пакеты, такие как mysql, pgsql, curl и т.д., не внес каких-либо изменений, но у меня есть проблема.
Мне нравится использовать кодировку ISO-8859-1/latin1 в моих файлах и базах данных, потому что именно там я получил лучший рабочий процесс. Теперь у меня проблема с этим, потому что PHP, похоже, не сочетается с исключениями, чьи сообщения закодированы таким образом.
Ну, просто для того, чтобы уточнить это лучше, я создал тестовый файл следующим образом:
ini_set('display_errors', 1);
error_reporting(E_ALL);
throw new Exception('é');
Если приведенный выше код находится в файле utf-8, все в порядке, с включенным Xdegub я получаю:
( ! ) Fatal error: Uncaught exception 'Exception' with message 'é' in /home/henrique/public/teste.php on line 5
( ! ) Exception: é in /home/henrique/public/teste.php on line 5
Call Stack
# Time Memory Function Location
1 0.0002 124212 {main}( ) ../teste.php:0
Если файл находится в ISO-8859-1, если Xdebug включен, проблема заключается в том, что сообщение не отображается:
( ! ) Fatal error: in /home/henrique/public/teste.php on line 5
( ! ) Exception: in /home/henrique/public/teste.php on line 5
Call Stack
# Time Memory Function Location
1 0.0002 124436 {main}( ) ../teste.php:0
Однако, без Xdebug, все, что я получаю, - это "очень разъясняющее" сообщение:
Fatal error: in /home/henrique/public/teste.php on line 5
Возможно, это проблема в Apache, потому что, когда я пытаюсь использовать эту же команду, я получаю:
Stack trace:
#0 {main}
thrown in /home/henrique/public/teste.php on line 5
Fatal error: Uncaught exception 'Exception' with message '�' in /home/henrique/public/teste.php on line 5
Exception: � in /home/henrique/public/teste.php on line 5
Call Stack:
0.0002 121256 1. {main}() /home/henrique/public/teste.php:0
Сообщение все еще существует, однако оно неразборчиво, но есть ли...
Изменить
Я также пробовал с Lighttpd 1.4.28, и результаты были одинаковыми.
Изменить 2:
Пробовал встроенный сервер PHP 5.4 и получил это на моем терминале:
[Wed Jun 5 21:32:08 2013] PHP Fatal error: Uncaught exception 'Exception' with message '�' in /var/www/test2.php:9
Stack trace:
#0 {main}
thrown in /var/www/test2.php on line 9
[Wed Jun 5 21:32:08 2013] 127.0.0.1:55116 [200]: /test2.php - Uncaught exception 'Exception' with message '�' in /var/www/test2.php:9
Stack trace:
#0 {main}
thrown in /var/www/test2.php on line 9
Но в браузере все та же проблема.