SSL非対応IMAPをインストールしてしまったときの戻し方
GoogleApps導入メモ番外編、ということで、前回PHPでIMAP経由でGmailを取得する記事を書きましたが、いざ本番サーバでこれを実行すると、なぜか失敗したんです!テストサーバで、あのプログラムで動いたのになぜ!?
原因は本番サーバのIMAPがSSL非サポートであったこと。phpinfo(); で確認できる「imap」の項目にssl support項目がないため、失敗してました。なので、その問題を解決した時のメモ書きです。
yumでインストールした時は恐らく自動的にSSL対応IMAPになっているため、まずこの問題は起きないと思います。ですので、ソースからPHPやIMAPをインストールした時に発生するかと思います。
念のため、ソースでPHPやIMAPをインストールする方法を記録しておきます。
1 2 | [root@hogehoge ~]# yum -y install php php-imap ...(インストール)... |
これだけです。指定しなかった他の必要なパッケージも自動的にインストールしてくれます。
さて、ソースからインストールする場合。UNIVERSITY OF WASHINGTON からダウンロードすることができます。文章中にリンクがあるので、ちょっとわかりづらいかと思いますが、ftp…/mail/imap.tar.Zとなっている部分がダウンロードリンクです。で、これを解凍してインストールするわけですね。
1 2 3 4 5 | [root@hogehoge ~]# ls imap.tar.Z php # phpはもともとインストールしてあった過去のソースファイル [root@hogehoge ~]# tar zxf imap.tar.Z # 解凍 [root@hogehoge ~]# cd imap-2007f [root@hogehoge imap-2007f]# make slx # コンパイル |
slxの部分はお使いの環境に応じて変更してください。オプション一覧は「Makefile」内に書かれています。
ちなみにここでmake slx SSLTYPE=noneとすると、SSL非対応IMAPの出来上がりです。以前自分はこうしてインストールしてしまったんですね・・・。なので、このSSLTYPEというオプションを外してmakeすればSSL対応済みIMAPになる、というわけです。
インストールはいつもの「make install」ではできません。必要なファイルをコピーして行う必要があります。
1 2 3 4 5 6 | [root@hogehoge imap-2007f]# mkdir /usr/local/include/imap [root@hogehoge imap-2007f]# mkdir /usr/local/include/imap/include [root@hogehoge imap-2007f]# mkdir /usr/local/include/imap/lib [root@hogehoge imap-2007f]# cp -p c-client/*.c /usr/local/include/imap/lib [root@hogehoge imap-2007f]# cp -p c-client/*.h /usr/local/include/imap/lib [root@hogehoge imap-2007f]# cp -p c-client/c-client.a /usr/local/include/imap/libc-client.a |
最後のコピーは【libc-client.a】にリネームすることに気をつけましょう。こうしないと後々のPHPインストール時にエラーとなってしまいます。
最後にPHPを再コンパイルしてインストールすれば終了です。PHPのソースファイルはPHPプロジェクトのどこかに有ると思いますので、それをダウンロードしてください(だんだん書くのが面倒になってきたw)
1 2 3 4 5 6 7 | [root@hogehoge imap-2007f]# cd ../php [root@hogehoge php]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-zend-multibyte --enable-ftp --with-imap=/usr/local/include/imap --with-imap-ssl --with-openssl ...(情報取得中)... [root@hogehoge php]# make ...(コンパイル中)... [root@hogehoge php]# make install ...(インストール中)... |
これであとは phpinfo(); を覗けばIMAP覧にSSL supportという欄が現れるはずです。ここまでくればPHPからのIMAPでSSL接続することが可能になりますので、Gmailもうまく連携できるかと思います。