失敗!PHPをcgiモードで動かそうとしたら
PHPをcgiモードで動かそうとしたら見事に失敗しました。現在はcgiモードではないですがその記録です。
CGIモードにしようと思った理由
CGIモードで動かそうと思ったのはwordpressの自動アップデートにあります。ヘテムル
やロリポップ
などの共用サーバーはwordpresのプラグインや自動更新などをFTP情報を記憶しておくだけで更新できます。僕が自分で構築したサーバーはそれができません。CGIモードなどにしたらできるかなという安易な考えで行おうとしました。
環境
- Apache:2.2.22
- PHP:5.3.10
Apacheがモジュール版が動いているかはphpinfoで確認してください。バージョンなどもわかると思います。
php.confファイルの確認
php.confファイルの確認をします。
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
LoadModule php5\_module modules/libphp5.so
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
デフォルトの設定になっていると思います
CGIモードへ切り替える
CGIモードへ切り替えるには上の12-15行目を変更します。 [vb] AddHandler php5-script .php AddType text/html .php 変更 ↓ Action php53-cgi /cgi-bin/php53 AddHandler php53-cgi .php .phps [/vb] [vb] cd /var/www/cgi-bin ln -s /usr/bin/php-cgi php52 [/vb] /cgi-bin/php53 という実行ファイルを実行する名前をphp53-cgiと定義したものです。 このため、apacheのカレントディレクトリから/cgi-bin/php53という実行ファイルが存在しないといけません。
httpd.confを確認
Apacheの設定ファイルを確認します [vb] ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin"> AllowOverride None
Options None
Options FollowSymLinks Order allow,deny Allow from all [/vb] Optionsを変更します。また、バーチャルドメインを使っている場合はバーチャルドメインの設定も変更します。 [vb] ServerName example.com DocumentRoot "/home/example" ServerAlias www.example.com <Directory "/home/example"> Options FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all [/vb] 終わりましたらアパッチをリスタートします。
失敗談
Apacheを再起動後、確認をしたのですが、管理画面などのPHPが動いていませんでした。サイトは見れるのですがwordpressにログインできなくなりました。Optionsを変更したら管理画面にはログインしたりいじれたりできましたが今度はサイトがトップページ以外みれなくなりました。 結局CGIモードではなく現在はモジュール版で動かしていますがちょっと難しかったです。
追記
サーバーを新しくしたら見事に上記のやり方でうまくいきました。現在logwはphpをcgiモードで動かしています