サーバーに関して、あまりモノを知らない自分用の備忘録です。
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)