失敗!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]
#
# 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
[/php]

デフォルトの設定になっていると思います

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モードで動かしています

この記事に関する技術サポート・ご相談

「手順通りにいかない」「自社環境への構築を代行してほしい」など、
インフラ・サーバー周りでハマった際はお気軽にご相談ください。

相談・問い合わせフォームを開く

※ Googleフォームへ移動します(初回相談無料)

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS