Apache2,wordpressをラズパイにインストールして、いざwordpressの設定を行おうと思いパソコンからwordpressの設定画面にアクセスすると。。。
PHPのコードがそのまま表示される。。。
そりゃそうか。単純にphpをラズパイにインストールしていないからphpコードをただのテキストファイルとして処理するからである。
さっそく、php関係のパッケージをインストールする。
インストール完了後再び、PHPファイルをブラウザから読み込む。
また、phpコードがそのまま表示される。
原因はApache2側でphpに関しての設定をしてないことのようだ。(phpをインストールしてからapcheをインストールするとうまくいく??)
この設定についていろいろと調べてみたが、ネット上の情報は古いものがいくつかあり現在のapache2の設定を探しだすのに苦労した。
現在(2015/8月)のrasbianで使用しているApache2のPHP設定について書いていく。
Apacheの設定に原因がある場合考えられるパターンは
- httpd.confにphp設定がされていない
- 短縮タグが無効になっている。
1が原因の場合
自分の原因はこのパターンだった。
まず、調べたときに検索結果の上のほうに出てきた情報でhttpd.confに以下が記述されているかを確認するというもの。
1 2 |
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps |
まず、httpd.confの中身が空なのだw
とりあえずこの記述をhttpd.confに記述して再起動。
まぁ予想通り動かない。
そこでhttpd.confについて調べる。
どうやら以前はこのファイルに設定関係が全て書かれていたみたいだが最近はいくつかのファイルに分けられているらしい。
それが、同じ階層内にある以下のファイル
- mods-available:使用可能なモジュール群が格納されたディレクトリ
- mods-enabled:有効にするモジュールを登録するディレクトリ
- sites-available:バーチャルホストの定義ファイルを格納するディレクトリ
- setes-enabled:実際に運用するバーチャルホストを登録するディレクトリ
今回はこの中のmods-enabledの設定を変更する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
pi@raspberrypi ~$ sudo vi /etc/apache2/mods-enabled/mime.conf <IfModule mod_mime.c> # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. # TypesConfig /etc/mime.types <中略> # If the AddEncoding directives above are commented-out, then you # probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-bzip2 .bz2 AddType application/x-httpd-php .php #<-----無かったら追加 Addtype application/x-httpd-php-source .phps #<-----無かったら追加 <中略> # To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # AddHandler cgi-script .cgi .pl .php #<----- .phpを追加 <中略>; </IfModule> |
自分のPHPがapache上で動かない原因はこれであった。無事にphpinfoを表示することもでき、wordpressを使用することができた。
2が原因の場合
ほぼこれが原因ということはないと思うがphpファイルによって読み込めたり、読めない場合があればこのパターンかもしれない。
これは短縮タグが有効になっているかの設定。
/etc/php5/apache2/php.iniの設定を変更する。
このapache2はphp5内のapache2ということに注意。
php.iniは膨大なファイルなので手作業で探すのが困難であるのでgrepコマンドでファイル内から検索する。
1 2 3 |
pi@raspberrypi /etc/php5/apache2 $ grep "short_open_tag" php.ini ; short_open_tag short_open_tag = On |
Onになっているのでこの場合は大丈夫。offになっていたらこれが原因の可能性大。
cf.短縮タグ
1 2 3 4 5 6 7 |
<?php echo '標準タグ'; ?> <? echo '短縮タグ' ?> |
apacheの設定以外に問題があるとすれば
- phpをインストールしていない
- phpタグが書かれていない
1が原因の場合
そもそも、PHPというのはrasbianには標準でインストールされていない。ラズパイでwordpressを導入するサイトなどではphpのインストールを省いているサイトもあるので注意。
2が原因の場合
まぁめったにないと思うパターンだが、自分でphpコードを書いた場合ならこのパターンに当てはまる可能性あり。
phpタグがしっかり閉じられているかを確認。また、phpの短縮タグを使っているなら非短縮形にしてみる。