tohokuaikiのチラシの裏

技術的ネタとか。

今更ながらPHP7でローカルにPEARを入れた話

今どきPEARって…という感じですが、HTTP_Request2とか意外と使い慣れてるので便利なんですよ。いい加減ComposerでGuzzle使ってくれって話なのですが、ことによってはHTTP_Requestの方がちょろっとPHPCLIスクリプト書く分には楽ですよね。と。

インストールは今どきは、go-pear.phpじゃない

インストールはgo-pearを取るんだったなと思いおもむろに

$ wget http://pear.php.net/go-pear
$ php go-pear

と打ち込んだところ

Sorry!  Your PHP version is too new (7.0.19-1) for this go-pear.
Instead use http://pear.php.net/go-pear.phar for a more stable and current
version of go-pear, more suited to your PHP version.

Thank you for your coopertion and sorry for the inconvenience!

ありゃりゃ。ということで、

$ wget http://pear.php.net/go-pear.phar
$ php go-pear.phar

としてインストール開始。

インストール場所の設定

どこにインストールするかを聞かれる。
ひっそりとこっそりとどこぞやの作業量ディレクトリに入れたいので

Below is a suggested file layout for your new PEAR installation.  To
change individual locations, type the number in front of the
directory.  Type 'all' to change all of them or simply press Enter to
accept these locations.

 1. Installation base ($prefix)                   : /home/tohokuaiki/pear
 2. Temporary directory for processing            : /tmp/pear/install
 3. Temporary directory for downloads             : /tmp/pear/install
 4. Binaries directory                            : /home/tohokuaiki/pear/bin
 5. PHP code directory ($php_dir)                 : /home/tohokuaiki/pear/share/pear
 6. Documentation directory                       : /home/tohokuaiki/pear/docs
 7. Data directory                                : /home/tohokuaiki/pear/data
 8. User-modifiable configuration files directory : /home/tohokuaiki/pear/cfg
 9. Public Web Files directory                    : /home/tohokuaiki/pear/www
10. System manual pages directory                 : /home/tohokuaiki/pear/man
11. Tests directory                               : /home/tohokuaiki/pear/tests
12. Name of configuration file                    : /home/tohokuaiki/.pearrc

と聞かれるけれども、「1」を選択してインストール先を変更

Installation base ($prefix) [/home/tohokuaiki/pear] : /home/tohokuaiki/test/hoge/lib/pear

で、4~11が変更される。ここで12の.pearrcも変更しておこう。

さて、おもむろにリターンを押下してインストール開始!!・・・と思いきや

1-12, 'all' or Enter to continue:
Beginning install...
XML Extension not found

あれれ?

$ php -m|grep xml
libxml

libxmlではダメなんだ。debianなので

$ sudo apt-get install -y php7.0-xml

でインストール後、再度go-pear.pharを実行する。今度は問題なく進行。途中で

Would you like to alter php.ini </etc/php/7.0/cli/php.ini>? [Y/n] : n

と聞かれるが、ひっそりとPEARを入れているのでそんなだいそれたことはするはずもなく、男は黙って「n」を押下。

すると、

I will add a workaround for this in the 'pear' command to make sure
the installer works, but please look over your php.ini or Apache
configuration to make sure /home/tohokuaiki/test/hoge/lib/pear/share/pear is in your include_path.

と「このディレクトリをinclude_pathにいれるんやで」と注意してくれた。

うーむ、/home/tohokuaiki/test/hoge/lib/pear/share/pearpearが被ってしまったな。

PEARパッケージのインストール

/home/tohokuaiki/test/hoge/lib/pear/share/pear/bin/pearPEARコマンドである。

HTTP_Request2を入れたいので

$ /home/tohokuaiki/test/hoge/lib/pear/bin/pear install HTTP_Request2

とすると、

WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
Cannot install, php_dir for channel "pear.php.net" is not writeable by the current user

と出る。んー、php_dirが書き込みできない…ということで、そういえば、さっきのPEAR環境設定ファイル.pearrcを指定してコマンドを打ち直す。

こんな感じ。このコマンドの長さがひっそり感を醸し出していて非常に素晴らしい。

念のためchannel-updateをした後で

$ /home/tohokuaiki/test/hoge/lib/pear/bin/pear -c /home/tohokuaiki/test/hoge/lib/pear/.pearrc channel-update pear.php.net

パッケージのインストール

$ /home/tohokuaiki/test/hoge/lib/pear/bin/pear -c /home/tohokuaiki/test/hoge/lib/pear/.pearrc install HTTP_Request2

これで無事完了。