サーバー

Ubuntu 12.04 PHP 5.4 から PHP 5.3 へダウングレード

サーバーに関して、あまりモノを知らない自分用の備忘録です。

Laravel 4 をインストールしようかと apt-get でアップデートしているうちに、ブラウザでPHP プログラムのソースがダウンロードされるようになり、プログラムが実行されなくなった。

最初は apache2 の設定を疑い、いろいろ設定を変更しても変化が起きない。で、端末から php が動作するか「php -v」を実行すると「5.5.1」と表示された。これが原因かどうか分からないが、5.4へのダウングレードの方法を検索しても分からず、とにかくもう一度インストールしてみることにした。

「sudo apt-get remove php5」で削除し「dpkg -l | grep php5」を実行すると、パッケージ名の前に「rc」フラグが表示され、削除はされているが設定ファイルが残っているので、もう一度「sudo apt-get purge php5-cgi php5-cli php5-common …」で削除した。これは remove する際「sudo apt-get remove –purge php5」で済んだかもしれないが未確認。

ここまでのカット&トライは次のサイトを参考にした。

Downgrade PHP 5.4 to 5.3 on Ubuntu 12.04

Ubuntu Server で単純にパッケージを削除しても設定ファイルは残る、残った設定ファイルを一括削除するには?

で、「sudo apt-get install php5」で再インストールするも、インストールされているバージョンは相変わらず「5.5.1」で変わらない。

PHP5が動作せずプログラムがダウンロードされる現象について検索していると、Ubuntuの「https://help.ubuntu.com/community/ApacheMySQLPHP」ページで「Troubleshooting PHP 5」のところに「ダウンロードが表示されるなら libapache2-mod-php5をインストールするように。PHP5のパッケージがインストールされたときPHPの異なるバージョンを動作させるため削除された可能性がある。」ような事が書かれていた。

そこで「sudo apt-get install libapache2-mod-php5」を実行したところインストールができず、「apache2-api-20120211の依存でそれがインストールされていない」とのメッセージが。

で、ようやく思い付いたのが、5.4 をインストールする際 リポジトリの追加を行っていた件だ。

「sudo add-apt-repository ppa:ondrej/php5」

これの意味が良く分からなかったので調べてみると、パッケージ管理でユーザー「ondrej」氏が管理するパッケージを利用するように追加したようで、PPA(Personal Package Archives)は誰でもパッケージ管理を公開、利用できるようになっているUbuntu用の仕組みらしい。

上記により「/etc/apt/sources.list.d」に保存されているので、それを削除するコマンドを実行することにした。

$ sudo apt-add-repository -r ppa:ondrej/php5
You are about to remove the following PPA from your system:
 This branch follows latest PHP packages as maintained by me & rest of the Debian pkg-php team.

It also includes some widely used PHP modules (if you need some other feel free to send me a request).

You might need to add additional PPAs to make some packages work:

????????ppa:ondrej/apache2
????????ppa:ondrej/systemd

If you are looking for latest MySQL packages you can use:

    ppa:ondrej/mysql

To re-build the packages you also need:

????????ppa:ondrej/debhelper

If you need to stay with PHP 5.4 you can use the oldstable PHP repository:

????????ppa:ondrej/php5-oldstable

P.S.: If you like my work and want to give me a little motivation, you can spoil me using PayPal: http://goo.gl/kKdCl or Flattr: https://flattr.com/submit/auto?user_id=oerdnj&url=http://www.sury.org/
 More info: https://launchpad.net/~ondrej/+archive/php5
Press [ENTER] to continue or ctrl-c to cancel removing it

これで削除して、もう一度「sudo apt-get install php5」を実行したところ、「Ver.5.3.10」や「libapache2-mod-php5」などが無事にインストールされ、PHPプログラムも動作するようになった。

やれやれだ。

なおPHP5.4を利用するには「ppa:ondrej/php5-oldstable」を利用すればいいらしい。

今回はUbuntuのパッケージ管理について少し勉強した。

モジュールの追加

実は現在開発はPHP5.4を利用するようにしているが、MySQLデータベースをアクセスできないと思ったらモジュールがインストールされていないことが分かった。そこでとりあえず以下のモジュールを追加でインストールした。

$sudo apt-get install php5-mysql php5-curl php5-gd php5-mcrypt

ところで PHP 5.5 以降は、MySQLの拡張モジュールは非推奨となり MySQLi か PDO_MySQL を利用するようにとの事。Laravel4は対応しているのだろうか?上のインストールではどちらのドライバも取り込まれているのでとりあえずはOKという事で。

(130820)