phpinfoにMySQLの情報が表示されない(MySQLモジュールが読み込まれない)

投稿者: | 2011年4月4日

サーバにPHPとMySQLをインストールしたが、PHPのプログラムからMySQLに接続できない問題が発生した。

シェルからMySQLのコマンドを実行すると、正常に動いていることは確認できる。

だが、PHPを経由したMySQLへのアクセスがうまくいかない。

整理すると↓のような状況。

状況:
1.Apache、PHP、MySQLの環境を作っていたのだけれど、MySQLの接続に失敗する。
2.コマンドラインからmysqlコマンドをたたくと正常に接続可能。extensionの指定も正しい。
3.phpinfoを実行するとmysql.iniもpdo_mysql.iniも読み込まれていて、iniファイルの中身も正しい。
4.php_mysqlもインストール済み。
5.mysqldも起動している。
6.それなのにphpinfoにMySQLのモジュール情報が表示されない。

原因はApacheの設定にありました。

Apacheがworkerの設定で動いていて、PHPのモジュールがマルチスレッドに対応しておらず正常にロードされていなかったのです。

今回作業したサーバにはredmineが入っていて、redmineの処理性能を上げるためにApacheのMPMがworkerに設定していた。

これが原因。

修正が必要なのは/etc/sysconfig/httpdの設定です。

MPM worker設定箇所に次のコメントがあります。

does not work with some modules (such as PHP)
いくつかのモジュールは共用できません(たとえばPHPとか)

今回はまさにこれに引っかかっていた。

redmineインストール済みのサーバにPHPのインストールをしていて、MPMの設定をいじった人はご注意を。