Windows10 + XAMPP ＆ PEAR (install Services_Amazon)

# Windows10に入れたXAMPPでpearを使えるようにしてみる
PHPを学習し始めた学生が「pearが使えないんですよおおおおお。Services_Amazonがダウンロードできないんですよおおおおおおおお！」と嘆いていたので，とりあえず使えるか実験してみる。

# 到達目標
1. pear コマンドを使えるか確認する。
2. Services_Amazon なるパッケージをインストールできるか確認する。

# 環境
* Windows10
* XAMPP 5.6.28

# [XAMPP](https://www.apachefriends.org/jp/index.html)ってなに？
超お手軽PHP開発環境。Webアプリケーションの実行に必要なフリーのソフトウェア。X(cross-platform) Apache + MariaDB + PHP + Perl ってことらしいよ。
開発用とか学習用に使われることが多いけど，まあ，その辺はその人の主義とか組織でのルールによって使うものが変わるのでこれじゃなきゃいけないなんてことはない。とかいう私もPHPの学習はXAMPPで始めたので超お世話になりました。今も学生と環境を合わせるためとか様々な理由でお世話になっています。Apache Friendsの皆様に多大なる感謝。
ちなみに，Windows，Linux，OS X 向けにそれぞれダウンロードボタンがあるのでそこからインストーラーをダウンロードして，PHPとMySQL（MariaDB）だけにチェックを入れてインストールしてる…してたはず。

# じゃあ，[PEAR](http://pear.php.net/)ってなに？
PEAR(PHP Extension and Application Repository)はPHPで利用することができるPHPで書かれたライブラリ（パッケージ）を提供してくれる素敵サービス。普通はPHP4やPHP5に最初から同梱されているはず。XAMPPではチェックボックスからインストールの指定が出来たかは正直覚えていないのでこれからXAMPPをインストール時にチェックボックスがあるか気を付けながら操作すると良いのかなと（一度XAMPPを削除することにそこはかとないめんどくささを感じてしまったため，未確認です。すいません）。OK連打は結構危険なのでご注意を。携わっている皆様に感謝をしながら使用させてもらいます。
ちなみに梨と同じ発音でいいみたい。

# よろしい，ならば実行だ
とりあえず「Windowsキー を押しながら Xキー を押す」。その後「Cキー」を単独で押して，コマンドプロンプトを起動させます。今後の作業はこのコマンドプロンプトでの操作が多くなると予測されます。不慣れな人は頑張りましょう。
開いてすぐに見えている「>」の左側部分が現在自分のいるフォルダです。とりあえず，cdコマンドでXAMPP内のPHPフォルダに移動します。（↓「>」の右側だけ入力してください。「\」 は「半角の￥」です）

`>cd C:\xampp\php`

XAMPPをインストールしただけの場合は，pearはどこからでも使える状態ではないので使える場所に移動する必要があるのでここは黙ってcdします。
cdは「change directory」の略で，現在操作しているディレクトリ（Windowsでいうところのフォルダと思っておいて問題はないような気がする）を変更するコマンドです。
XAMPPのインストール先を自分で変更していない限りこれで移動ができるはずです。もし自分で変更してしまっていて，パス（フォルダの場所）がわからない場合はエクスプローラー（ファイルやフォルダをダブルクリックなどで選択していく奴のことです）を起動し，xampp内のphpフォルダに移動すると，エクスプローラの上部に今開いているフォルダの場所を示す部分があるはずです。その中の何も字がないところをクリックするとパスが表示されるのでそれをコピペして使用しましょう。

# pearが使えない問題に関して
おもむろにpearのバージョンを確認するコマンドを入力してみます。

`>pear version`

返事が，

```
PEAR Version: 1.10.1
～以下略～
```

え，正常な返事が返ってき，たよ？？
この返事はpear自体が動かないと表示されません。使えないのにコマンドを使うと「そんなコマンドないよ」って言われて終わってしまします。もしかしたらcdする前にpearコマンドを使用して，動かないからpearの再インストールをしてパスが狂ったとかそんなことが原因な可能性もありますので，ちょっと詳細聞いてみます。
PEAR自体が動いていないのであれば，パスが通ってない（ざっくり言うとインストールされてるけど使うためにやるべきことが終わってない）かそもそもインストールされてないかのどっちかの可能性が非常に高いです。
※この記事を書いている最中に学生から連絡が来ましたが，pearのインストール後に環境変数の設定をして，コマンドプロンプトを再起動なりせずに使用していたため，コマンドが使用できなかったようです。


# [Services_Amazon](https://pear.php.net/package/Services_Amazon)をインストールしたい
さて，今回の学生の要望は「PHPを使って Services_Amazon をインストールしたい」だったので，おもむろにPEARを使ってインストールを試みます。

`>pear install Services_Amazon`

はい，おもむろに怒られました。

```
Failed to download pear/Services_Amazon within preferred state "stable", latest release is version 0.9.0, stability "beta", use "channel://pear.php.net/Services_Amazon-0.9.0" to install
install failed
```

とりあえず，勢いでメッセージを感じ取ると「Service_Amazonのインストールは安定版になってる状態がいいんだけど，こいつ，最新のリリースが0.9.0でベータ版だから，インストールには"channel://pear.php.net/Services_Amazon-0.9.0"を使ってね」みたいなことを言ってるみたいです。
では，ベータ版Services_Amazonのインストール方法を考えます。

# PEARで Services_Amazon-0.9.0 をインストールする
こういう時はコマンド自体の使い方を調べるところからいくのがいいのではないかと思うので，おもむろにpearコマンドの説明を出します。

`>pear -h`
「-h」はオプションと呼ばれているものです。「マナーモードでスマホを使う」って感じで，「-hオプションを付けてpearコマンドを使う」ってことになります。
ずらっとコマンドに対する説明書きが出てきたでしょうか。説明文の上のほうに，「channel-add」ってものが存在し，説明は「Add a Channel」となっています。Addは追加するって意味なので，これが非常に怪しいです。が，その辺のことを説明しだすとキリがないので，今回はバージョンを指定して実行して，さらっと流したいと思います。ちなみに [ここ](https://pear.php.net/package/Services_Amazon/download/)を参照しました。最終更新が2011年12月22日なので現状のAmazon API に対して使用できるのかよくわかりませんが，使えなかったらその時考えればいいので，とにかく入れます。

`>pear install Services_Amazon-0.9.0`

うまいこと行くかなと思いきや，

```
～中略～
ERROR: failed to mkdir C:\php\pear\docs\Net_URL\docs
ERROR: failed to mkdir C:\php\pear\docs\HTTP_Request\docs
```

と，最後に可愛い文章を返してきて止まりました。mkdirはディレクトリ（Windowsのフォルダと...以下略）を作成するためのコマンドですが，その作成に失敗したとのこと。管理者権限足りないから怒られたのでしょう。ちなみに管理者権限は，PC(OS)のあらゆる部分を好き勝手できる権限のことと思っておいてもらっていいと思います。ログインしているユーザーに管理者権限がなければこんな表示が出ますので，ここは黙って管理者権限で開きなおそうと思います。今開いているコマンドプロンプトは「Altキー + F4キー」で容赦なく消します。

# 管理者権限で再チャレンジ
今度は「Windowsキー + Xキー」の後，「Aキー」を単独で押して，管理者権限でコマンドプロンプトを起動させます。この時，「このアプリがデバイスに変更を加えることを許可しますか？」とか妙に怖いことを聞いてきますが，許可しないとディレクトリの作成ができない（というか，コマンドプロンプトが開かない）ので許可してください。で，以下のコマンドを使用1行ずつ実行します。

```
>cd C:\xampp\php
>pear install Services_Amazon-0.9.0
```

返ってきたメッセージの最後が

```
～中略～
install ok: channel://pear.php.net/Net_URL-1.0.15
install ok: channel://pear.php.net/HTTP_Request-1.4.4
```
ってなったのですが，インストールに成功したのはServices_Amazonのインストールに必要な別のものだけだったようなので，出力された情報を読んでみます。
Sercices_Amazonは「XML_Serializer」ってのに依存しているようで，これがないと使えないっぽいみたいな話が出てきているのですが，これも「自動インストールしようとしたけど，安定版じゃないからインストールできなかったよてへ。」みたいに言っているので，XML_Serializerのインストールを試みます。

`pear install XML_Serializer-0.21.0`

今度は特に怒られることなく成功した模様です。万歳。

```
～中略～
install ok: channel://pear.php.net/XML_Parser-1.3.7
install ok: channel://pear.php.net/XML_Serializer-0.21.0
```

ここで，Services_Amazon のインストールに再チャレンジするため，再度以下のコマンドを入力してみます。

`pear install Services_Amazon-0.9.0`

で，結果が以下のようになってインストール自体は完了した模様です。

```
～中略～
install ok: channel://pear.php.net/Services_Amazon-0.9.0
```

最後にインストールされているパッケージを確認するコマンドを使用して，ちゃんとインストールされているか確認してみます。

`>pear list`

で，これの結果の中に，

`Services_Amazon  0.9.0   beta`

って表示があれば大成功です。万歳。
※Services_Amazonのインストールが目的だったため，これが利用できるかはまた別の話です。

# 結論
* XAMPPでもやっぱりPEARは使える（いろんな人が以前から様々な記事に残してますしね）
* 「pear install」をするときはパッケージのバージョンに注意

# 改めて心に誓ったこと
* めんどくさくても，最初に公式ページの説明はちゃんと読もう
* コマンドを実行した後のメッセージは大切に扱おう
* 英語でも頑張って読もう

では皆様，お疲れさまでした。