Do You PHP はてブロ

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

pecl installでの「`phpize' failed」

CentOS4.5に2つのPHPをそれぞれ

  • PHP5.2.3:/usr/local/lib/php5
  • PHP4.4.7:/usr/local/lib/php4

にインストールした環境で、peclコマンドを使ってパッケージをインストールすると、

$ pecl install parsekit
downloading parsekit-1.2.tgz ...
Starting to download parsekit-1.2.tgz (14,979 bytes)
.....done: 14,979 bytes
3 source files, building
running: phpize
Configuring for:
PHP Api Version:         20020918
Zend Module Api No:      20020429
Zend Extension Api No:   20050606
ERROR: `phpize' failed
$

といった具合にほぼ「phpizeでエラー」になります(PHP5、PHP4共に)。あ。PHPが1つの時はこの現象出ません。
で、peclコマンドを起点にちょっと追っかけてみると、$PEAR_DIR/PEAR/Builder.phpの455行目付近

<?php$pp = popen("$command 2>&1", "r");
                 :
        if (is_resource($pp)) {
            $exitcode = pclose($pp);
        } else {

にあるpclose関数で「-1」が返されていることが直接の原因のようです。
ちなみにこの「-1」自体はphpizeコマンドの戻り値ではなく、phpizeコマンドは正しく実行されて正常終了していました。となると、pclose関数でエラーが発生して「-1」を返しているっぽい。。。ということで、ext/standard/file.cを見てみると

       :
PHP_FUNCTION(pclose)
{
    zval **arg1;
    php_stream *stream;
    
    if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {
        WRONG_PARAM_COUNT;
    }

    PHP_STREAM_TO_ZVAL(stream, arg1);

    zend_list_delete(stream->rsrc_id);
    RETURN_LONG(FG(pclose_ret));
}
       :

うっ。ちゃんと追わないとダメか?。。。というところで時間切れ。
まあ、手動で問題なくインストールできるし、実質問題ないといえば問題ないんですが。。。何かイヤじゃありません?