最近、apt-getからUbuntu12.10にPHP5.4をインストールしました。
PHP情報の表示:PHPバージョン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
しかし、ブラウザでは、それでも同じ問題があります。