こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Debian/GNU Linux V.3.1r1 + PHP4で PHPが突然動作しない

お世話になります。

Debian/GNU Linux V3.1r1で突然PHP4が動作しなくなってしまいました。
(ダウンロードしますか?となってしまう)

日経Linux2006-1の特集2に記事を参考に、
aptitude install apache2 libapache2-mod-php4 php4-mysql mysql-server
としてLAMP環境を用意しました。

数日は正常に動作していたのですが、
(<?php phpinfo(); ?>も正常に表示していました。)
突然上記の状況となりました。

実は、この現象は一度経験があり、その際は
aptitude remove apache2 libapache2-mod-php4 php4-mysql mysql-server
をして
aptitude install apache2 libapache2-mod-php4 php4-mysql mysql-server
をしたところ回復しました。

今回は、MySQL内に若干データを入れたのでアンインストール&再インストールの手順は避けたいと思います。

aptitude remove apache2 libapache2-mod-php4
aptitude install apache2 libapache2-mod-php4
では解決しませんでした。

Apache2のデフォルトページは見れるので、Apache2は動作しているようです。

PHP4のモジュールがロードされる記述が見つけられないのですが、どういう仕組みでPHP4のモジュールはロードされるのでしょうか。


また、そのほかにはどのような確認をしたらいいでしょうか。

投稿日時 - 2006-03-06 17:23:25

QNo.2010970

すぐに回答ほしいです

質問者が選んだベストアンサー

>にコピーしたところ(シンボリックリンクがわからなかったのでとりあえず)
>PHPが動作するようになりました。

ファイルを直接コピーされたようですが、ここはやはりDebian流にのっとって
シンボリックリンク(Windowsでいうところのショートカット)を張りましょう。

# ln -s /etc/apache2/mods-available/php4.conf /etc/apache2/mods-enabled/php4.conf
# ln -s /etc/apache2/mods-available/php4.load /etc/apache2/mods-enabled/php4.load


但し、同じような作業を繰り返すのは面倒なので、モジュールの一覧から、シンボリックリンク
を張ったり、削除してくれる便利なコマンドがDebianには用意されています。

●シンボリックリンクを削除(モジュールを無効)してくれる、a2dismod コマンド

# a2dismod

Which module would you like to disable?
Your choices are: cgi php4 userdir ← モジュールの一覧が表示される
Module name? php4 ← 無効にしたいモジュールを指定する
Module php4 disabled; run /etc/init.d/apache2 force-reload to fully disable.


●シンボリックリンクを張ってくれる(モジュールを有効)、a2enmod コマンド

# a2enmod

Which module would you like to enable?
Your choices are: actions asis auth_anon auth_dbm auth_digest auth_ldap cache cern_meta
cgi cgid dav dav_fs deflate disk_cache expires ext_filter file_cache headers imap include
info ldap mem_cache mime_magic php4 proxy proxy_connect proxy_ftp proxy_http rewrite
speling ssl suexec unique_id userdir usertrack vhost_alias ← モジュールの一覧が表示される
Module name? php4 ← 有効にしたいモジュールを指定する
Module php4 installed; run /etc/init.d/apache2 force-reload to enable.

投稿日時 - 2006-03-07 00:44:46

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

xjd

>PHP4のモジュールがロードされる記述が見つけられないのですが、どういう仕組みで
>PHP4のモジュールはロードされるのでしょうか。


DebianのApache2は設定ファイルの配置が独特でして、まず、Apache2の設定ファイルは
以下のファイルです。

/etc/apache2/apache2.conf (httpd.confではない)

次に、apache2.confファイルの110行目あたりに、以下のような記述があるはずです。

115: # Include module configuration:
116: Include /etc/apache2/mods-enabled/*.load
117: Include /etc/apache2/mods-enabled/*.conf

apache2.confを読み込む途中で、/etc/apache2/mods-enabled/配下の
*.load と *.confファイルを読み込みなさい、という意味です。

というわけで、/etc/apache2/mods-enabled/ 配下をのぞいて見ると、

# ls -l /etc/apache2/mods-enabled/

lrwxrwxrwx 1 root root 37 Feb 26 20:17 php4.conf -> /etc/apache2/mods-available/php4.conf
lrwxrwxrwx 1 root root 37 Feb 26 20:17 php4.load -> /etc/apache2/mods-available/php4.load

あなたが捜している、php関連のファイルがありますが、見たとおり、これはシンボリックリンクに
なっているわけで、php関連の設定ファイル本体は、/etc/apache2/mods-available/ 配下にあります。

ls -l /etc/apache2/mods-available/

-rw-r--r-- 1 root root 133 Aug 25 2005 php4.conf
-rw-r--r-- 1 root root  59 Aug 25 2005 php4.load

中身をみれば、見慣れた記述があるはずです。

# cat /etc/apache2/mods-available/php4.load

LoadModule php4_module /usr/lib/apache2/modules/libphp4.so

# cat /etc/apache2/mods-available/php4.conf

<IfModule mod_php4.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>


ご参考まで。

投稿日時 - 2006-03-06 20:06:24

お礼

ありがとうございました。

確認してみたところ、
/etc/apache2/mods-enabled/
のなかに、PHPに関するものがありませんでした。

/etc/apache2/mods-available/
にあったPHP関連のconfとloadを
/etc/apache2/mods-enabled/
にコピーしたところ(シンボリックリンクがわからなかったのでとりあえず)PHPが動作するようになりました。

はじめは正常に動作していたので、
どうして消えてしまったのか不思議です。

投稿日時 - 2006-03-06 23:38:54

あなたにオススメの質問