モジュールをインストールできないと思ったら
VPSを何台か借りているが、VPSというのは、その内情(インストール方法)を知っておかないと、恐ろしく手間取る可能性があることを改めて知った。
格安でVPSを借りているのだが、そこにはpdo_mysqlがインストールされていなかった。そこでpdo_mysqlをインストールしようとして四苦八苦したので、メモを残しておく(現状報告として、現時点ではインストールできていない)。
まず最初にしたことはRPMパッケージ探し。OSはCentOSであることがわかっているが念のため、バージョンを確認。
more /etc/redhat-release
これでバージョンが確認できた(ちなみにOSはCentOS4.7だった)。次に当該バージョンでRPMが提供されているかどうかウェブで調べる。結構調べたつもりだけど、結果として見つけられなかった。「さて、どうしようか」と考えて、次にPECLでのインストールを試みる。これには事前にいろいろなパッケージを入れておく必要がある。yumコマンドでインストールした。
yum –enablerepo=centosplus -y install php-devel php-pear mysql-devel httpd-devel
yumのリポジトリでcentosplusというのを有効にしておく必要があるみたい。ちなみにyオプションは、何を聞かれても「y」と答えなさい、という意味。ここまででPECLコマンドが利用できるようになった(PECLは確かPEARに含まれていたと思った)。そこでコマンドラインで、コマンド一発。
pecl install pdo_mysql
とりあえず応答メッセージの下のほうにcompleteと書いてあるので、いちおうOKっぽい。で、最終作業。php.iniに必要な情報(extension_dirやextension)を記述してapacheを再起動。しかしphpinfoにはpdo_mysqlは現れない。それどころかエラー。
PHP Warning: PHP Startup: pdo_mysql: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
ん~。どうやらバージョンが違うようだ。どうしてこんな食い違いが起こるんだろう。
その後、いろいろやってみたけどやっぱり動かない。なぜこんなことがおきるんだ。と思ってウェブを調べていたら、英語サイトにヒントが見つかった。そのサイトには、以下のコマンドを試してみろと書いてあった。
php -v
/usr/bin/php -v
/usr/local/bin/php -v
ん~、どういうことだろうと思いつつ、コマンドを打ってみたら、あれまぁ、結果が違うじゃん。バージョンとか。もしやと思って、rpmコマンドでインストールされているPHPのバージョンを調べてみた。そしてphpinfoでもバージョンを確認。そして愕然。
バージョンが違う。少し考えてわかった。PHPはrpmでインストールじゃなくて、コンパイルしてインストールされているんだ。しかもいろいろ調べてみたら、どうもapacheも手作業でインストールされているっぽい(だって設定ファイルの位置がRedHat系の場所と違うんだもん)。てことは、簡単お手軽RPM(もしくはyum)でインストールしようが、何しようが反映されないし、ディスクの肥やしになるだけってことか(性格にはCLI版PHPには反映されるわけだが)。
VPSにしても専用サーバにしても、開発の重要な要素である、PHPやapache、データベース周りはどのようにインストールされているのか知っておく必要がありそうだ。そもそも今回自分が借りているサーバだからいろいろできたけど、そうじゃなかったらサーバ屋さんに有償対応をお願いしたところだけど・・・、自分でやってみて初めて状況がわかったよ。
ということで、問題のpdo_mysqlはいまだにインストールできていない。今度また時間があったら再度チャレンジする予定。自分の家にあるPCにインストールしてあるんだったらとりあえずやっちゃうんだけど、レンタルしているサーバだから再インストールになったらまた費用がかかるから無理はしないことにした。