Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

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に入れたら良いんじゃね?」みたいな話が出てるようです。