hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

PEAR::MailでSMTPサーバーからのメール送信(PEARインストール編)

PEAR::Mailはずっと昔に使ったことがあったのですが、すっかり使い方を忘れていたのでひと通りの作業をやってみました。
いい機会なのでPEARのインストールからやってみています。(今回はインストールまでです。)
今度は忘れないように、備忘録として。

環境はCentOSPHPはインストール済みになります。

pearのインストール

CentOSだとPEARのパッケージが提供されているので、yumからインストールします。

$ sudo yum -y install php-pear

正常にインストールされたかどうか「pear -V」で確認します。

$ pear -V
PEAR Version: 1.4.9
PHP Version: 5.1.6
Zend Engine Version: 2.1.0
Running on: Linux centos.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686

チャネルのアップデート

PEARのインストールが完了したら、とりあえずチャネルを最新にアップデートしておきます。

$ sudo pear channel-update pear.php.net
[sudo] password for username:
Retrieving channel.xml from remote server
Update of Channel "pear.php.net" succeeded

PEAR::Mailインストール

ここでようやく「PEAR::Mail」のインストールを行います。
インストールは「pear install -a Mail」で行います。

$ sudo pear channel-update pear.php.net
PEARのバージョンが古いと怒られる

実際にコマンド実行したら、下記のようなメッセージが表示されてインストールが失敗しました。

pear/Mail requires PEAR Installer (version >= 1.5.6), installed version is 1.4.9

PEARのバージョンを「1.4.9」から「1.5.6」にアップグレードしないといけないようです。
但し、「PEAR::Mail」以外の関連するライブラリである「Auth_SASL」「Net_Socket」「Net_SMTP」は正常にインストール出来ました。

$ sudo pear install -a Mail
pear/Mail requires PEAR Installer (version >= 1.5.6), installed version is 1.4.9
downloading Net_SMTP-1.4.4.tgz ...
Starting to download Net_SMTP-1.4.4.tgz (12,264 bytes)
.....done: 12,264 bytes
downloading Net_Socket-1.0.10.tgz ...
Starting to download Net_Socket-1.0.10.tgz (5,429 bytes)
...done: 5,429 bytes
downloading Auth_SASL-1.0.4.tgz ...
Starting to download Auth_SASL-1.0.4.tgz (5,795 bytes)
...done: 5,795 bytes
install ok: channel://pear.php.net/Auth_SASL-1.0.4
install ok: channel://pear.php.net/Net_Socket-1.0.10
install ok: channel://pear.php.net/Net_SMTP-1.4.4
PEARをアップグレード使用とするが失敗

PEARのバージョンが古いみたいなので、「pear upgrade PEAR」でアップグレードを実施してみますが、見事に失敗しました。

バージョン指定をすると「PEAR-1.5.6」なんて無いとエラーが発生します。

$ sudo pear upgrade pear/PEAR-1.5.6
Failed to download pear/PEAR, version "1.5.6", latest release is version 1.9.1, stability "stable", use "channel://pear.php.net/PEAR-1.9.1" to install
Cannot initialize 'pear/PEAR-1.5.6', invalid or missing package file
Package "pear/PEAR-1.5.6" is not valid
upgrade failed

バージョン指定をしなくても「Console_Getopt」のバージョンが古いというエラーが発生してアップグレードできませんでした。

$ sudo pear upgrade PEAR
pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.0 is not the recommended version 1.2.3, but may be compatible, use --force to install
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
pear/Console_Getopt requires PEAR Installer (version >= 1.9.1), installed version is 1.4.9
No valid packages found
upgrade failed
「--force」で強制的にPEARをアップグレード

WEBを調べてみると、「--force」オプションを付加してコマンドを実行すると、アップグレードできるとの記載がありました。
「--force」を付加すると、「強制的にアップグレード」という意味になるようです。
早速やってみると、警告(warning)は表示されるものの、正常にPEARのアップグレードが出来ました。

$ sudo pear upgrade --force PEAR
warning: pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.0 is not the recommended version 1.2.3
warning: pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
warning: pear/Console_Getopt requires PEAR Installer (version >= 1.9.1), installed version is 1.4.9
downloading PEAR-1.9.1.tgz ...
Starting to download PEAR-1.9.1.tgz (293,587 bytes)
..........................................................done: 293,587 bytes
downloading Archive_Tar-1.3.7.tgz ...
Starting to download Archive_Tar-1.3.7.tgz (17,610 bytes)
...done: 17,610 bytes
downloading Console_Getopt-1.3.0.tgz ...
Starting to download Console_Getopt-1.3.0.tgz (4,408 bytes)
...done: 4,408 bytes
pgrade ok: channel://pear.php.net/Console_Getopt-1.3.0
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.7
upgrade ok: channel://pear.php.net/PEAR-1.9.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
To install use "pear install pear/PEAR#featurename"

念のために「pear list」でバージョンを確認すると、PEARが「1.9.1」にバージョンアップしていました。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Auth_SASL        1.0.4   stable
Console_Getopt   1.3.0   stable
Net_SMTP         1.4.4   stable
Net_Socket       1.0.10  stable
PEAR             1.9.1   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.4   stable
XML_Util         1.2.1   stable
もう1度、PEAR:mailをインストールしてみる

PEARのバージョンアップが出来たのでもう一度「PEAR::Mail」のインストールを行って見ると、今度は正常にインストールが出来ました。

$ sudo pear install Mail
downloading Mail-1.2.0.tgz ...
Starting to download Mail-1.2.0.tgz (23,214 bytes)
........done: 23,214 bytes
install ok: channel://pear.php.net/Mail-1.2.0

「pear list」で確認すると「Mail 1.2.0 stable」が表示され、正常に「PEAR::Mail」がインストール出来ていることが確認出来ました。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Auth_SASL        1.0.4   stable
Console_Getopt   1.3.0   stable
Mail             1.2.0   stable
Net_SMTP         1.4.4   stable
Net_Socket       1.0.10  stable
PEAR             1.9.1   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.4   stable
XML_Util         1.2.1   stable
ついでにMail_Mineもインストールする

「PEAR::Mail」がインストール出来たので、調子に乗って「PEAR::Mail_MIME」もインストールしておきます。

$ sudo pear install Mail_Mime
downloading Mail_Mime-1.8.1.tgz ...
Starting to download Mail_Mime-1.8.1.tgz (31,530 bytes)
.........done: 31,530 bytes
install ok: channel://pear.php.net/Mail_Mime-1.8.1

「pear list」で確認すると、「Mail_Mime 1.8.1 stable」が表示されていることを確認出来ました。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Auth_SASL        1.0.4   stable
Console_Getopt   1.3.0   stable
Mail             1.2.0   stable
Mail_Mime        1.8.1   stable
Net_SMTP         1.4.4   stable
Net_Socket       1.0.10  stable
PEAR             1.9.1   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.4   stable
XML_Util         1.2.1   stable

とりあえず、今回はここまでになります。
実際にサンプルコード書いてのメール送信については、次になります。

今回参考にしたページ

CentOSにyum経由でPEARをインストールする方法 - Layer8 Reference
http://jp.layer8.sh/reference/entry/show/id/2402

PEARライブラリの追加 - r-tgw.net WEBの備忘録
http://wiki.r-tgw.net/index.php?PEAR%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E8%BF%BD%E5%8A%A0

PEARのアップグレード(upgrade)に失敗したが、なんとか解決した記録。
http://colo-ri.jp/develop/2009/08/pearupgrade.html

CentOS sudo を設定する - 日々のメモ
http://d.hatena.ne.jp/a__z/20071011