サーバー

Ubuntu12.04 PHP5.5から5.4、Apache2.4から2.2へダウングレード

発端は、ノートPCのVirtual Boxで動作させていたサーバー上で、WordPressとSMTPプラグインを利用してローカルからメールを送信してみよう、という動作を試してみようとしたところ、WordPressを動作させると「Deprecated: mysql_connect()なんちゃら」とエラーが表示されたことからです。

PHP5.5からはMySQLのコマンドはmysqliかPDOのみになるため、WPのDEBUGフラグをセットすると非推奨の表示がされるのは仕方ないとして、「error_reporting(E_ALL ^ E_DEPRECATED)」で表示を消そうとしたけど消えません。はて?

いろいろと試して時間を潰してしまい腹が立ったので、PHP5.5を5.4へダウングレードする決断をしました。これは以前、「Ubuntu 12.04 PHP 5.4 から PHP 5.3 へダウングレード」でさんざん苦労したのでちゃっちゃっと済ませました。

手順はPHP5.5を削除して、レポジトリを書き換えておき、再インストールします。

$ sudo service apache2 stop
$ dpkg -l | grep php5
$ sudo apt-get --purge remove php5 php5-mcrypt …

apache2を停止し、php5.5に関するパッケージリストを参照してから削除します。

$ sudo apt-add-repository -r ppa:ondrej/php5
$ sudo apt-add-repository ppa:ondrej/php5-oldstable
$ sudo apt-get install php5

PHP5.5のリポジトリを削除して、PHP5.4をインストールするためのリポジトリを設定、PHP5をインストールし直してPHP5.3、PHP5.4へとインストール、アップデート完了。さぁ、phpinfo()だ、で、実行したらプログラムがダウンロードされてきました。

訳わかりませ~ん。

Google先生に尋ねまくっていると、PHPのモジュールがApacheに組み込まれているか確認しろ、とのこと。

$ sudo apache2ctl -M | sort

あらら、PHP5モジュールがないではありませんか?そう、これを忘れてました。

$ sudo apt-get install libapache2-mod-php5
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies: libapache2-mod-php5 : Depends: apache2.2-common but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

パッケージの依存状態がよくないような。もう、訳わかりません。ここからはドロ沼です。

Google先生に尋ねまくった結果、次のページでようやく原因が何となくわかりました。

libapache2-mod-php5 uninstalled after update impossible to put back

Ubuntu 12.04, PHP 5.4, Apache2 and ppa:ondrej/php5

そうです、Apache2が2.2から2.4へアップグレードされていたのです。2番目のリンク先に書いてありましたが、PHP5.5のアップデートでApache2.2からApache2.4へ依存の設定が変わり、Apache2.4が動作していたわけです。どうやらApache2.2へ戻さないとPHP5.4は動作しそうもありません。

でもApache2.4から2.2へのダウングレード方法が分かりません。

で、思い切って2.4を削除して、再インストールを試してみることにしました。

$ dpkg -l | grep apache2
$ sudo apt-get remove --purge apache2 apache2-bin …
$ sudo apt-get install apache2

エーと、忘れていたあれ。

$ sudo apt-get install libapache2-mod-php5
$ sudo service apache2 restart

phpinfo()を実行すると、無事、PHPが動作することが確認できました。

今日はこれで貴重な土曜日が潰れてしまいました。でもまだapacheとPHPの設定が残っているのでした(T_T)。