2018/04/12追記
PHP 7 では、うまく動作しなくなってしまったようです。
インストール自体は出来るようですが、その後、Web Frontend(「Start Web Frontend of the PEAR Installer >>」リンク)でエラーが頻発し、正常に動作しません。
これは当方では対処は困難です。あしからずご了承願います。
修正版のgo-pear.phpのダウンロードはこちらから
GitHub - furyutei/go-pear: Modify the PEAR installation wizard(go-pear.php)
経緯:レンタルサーバ等のコマンドラインが使えない環境でPEARがうまくインストールできない
ホスティング環境での PEARのインストール方法に従って、go-pearをgo-pear.phpという名前でサーバ上にアップロードし、ブラウザから開いてPEARをインストールしようとしたが、途中で止まってしまう現象が発生。
具体的には、
Bootstrapping Installer...................
Bootstrapping PEAR5.php............(remote) ok
Bootstrapping PEAR.php............(remote) ok
Bootstrapping Archive/Tar.php............(remote) ok
Bootstrapping Console/Getopt.php............(remote) ok
Fatal error: Class 'PEAR' not found in /path/to/go-pear/go-pear.php on line 697
までが表示された後、エラー表示もなく停止してしまった。エラー表示を有効にした場合、Fatal errorになっていた。
プログレスバーは21%あたり。
原因と対策
go-pearのソース中、
$bootstrap_files = array( 'PEAR5.php' => 'https://raw.github.com/pear/pear-core/master/PEAR5.php', 'PEAR.php' => 'https://raw.github.com/pear/pear-core/master/PEAR.php', 'Archive/Tar.php' => 'https://raw.github.com/pear/Archive_Tar/master/Archive/Tar.php', 'Console/Getopt.php' => 'https://raw.github.com/pear/Console_Getopt/trunk/Console/Getopt.php', );
のように定義されているファイルを download_url() という関数を使ってダウンロードしているが、実際のファイルは
https://raw.githubusercontent.com/pear/.../master/...
に存在しており(301 Moved Permanently)、download_url()がリダイレクトに未対応だったために、空ファイルとなっていた。
error_log を見ると、
PHP Fatal error: Class 'PEAR' not found in /path/to/go-pear/go-pear.php on line 697
のようなエラーが発生していた。
そこで、download_url() を改修し、簡易的に自動リダイレクト処理をサポートすることにより対処した。
修正版のgo-pear.phpはこちら