scream
screamといえば、
が真っ先に思い浮かぶのは置いといて、エラーメッセージを抑制するエラー制御演算子("@"演算子)を無効にしてメッセージを出力させる拡張モジュールだそうです。
ということで、ざっと試してみました。
インストールは、
$ sudo pecl install scream-alpha
$ sudo vi /path/to/php.ini # extension=scream.soを追加
$
でOK。
サンプルは「存在しないファイルを読み込もうとしてエラー」というありがちなものを用意。
<?php function doIt() { echo "doIt" . PHP_EOL; $handle = @fopen('no_exist_file.txt', 'r'); } ini_set('scream.enabled', 0); doIt(); ini_set('scream.enabled', 1); doIt();
scream拡張モジュールは、ini設定としてscream.enabledがあります。
で、これの実行結果。
$ php scream.php doIt doIt PHP Warning: fopen(no_exist_file.txt): failed to open stream: No such file or directory in /path/to/scream.php on line 4 PHP Stack trace: PHP 1. {main}() /path/to/scream.php:0 PHP 2. doIt() /path/to/scream.php:11 PHP 3. fopen() /path/to/scream.php:4 $
ほー。なるほど。これ、「過去に作った@演算子使いまくってるコードをメンテ・デバッグしなきゃならない場面」とかで使えそうだなぁ。
で、php.internalsでは「scream拡張モジュールの機能をcoreに入れたら良いんじゃね?」みたいな話が出てるようです。