お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-04-02 10:55:24

Rider2
新しいメンバ
登録日: 2011-04-02

apache2 PHP5 CGI が上手く動作しません。

借りているレンタルサーバーと同じ環境をローカルに作るために次の様にubuntuをセットアップしました。

実行マシン:VMware Workstaion
ubuntuイメージ:ubuntu-ja-10.10-desktop-i386.iso

Synapticパッケージ・マネージャで次をインストールしました。
次のパッケージをインストールするのに必要なパッケージもインストールしました。
    chromium-browser
    apache2
    php5
    php5-cgi
    mysql-server
    php5-mysql
    php5-XDebug
    openjdk-6-jdk
    telnetd-ssl
    php5-dev
    php-pear
    open-vm-toolbox

レンタルサーバーでは、phpをcgiとしてのみ利用可能で、拡張子『.cgi』を使い、Perl等の様に利用します。

ローカルでたてたubuntuでは、Perlで作成したCGIプログラムは正常に動作するのですが、phpで作成したプログラムは動作できません。
error.logは、次のようになっています。

[Sat Apr 02 10:22:46 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.3 with Suhosin-Patch configured -- resuming normal operations
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] <b>Security Alert!</b> The PHP CGI cannot be accessed directly.
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28]
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] <p>This PHP CGI binary was compiled with force-cgi-redirect enabled.  This
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] means that a page will only be served up if the REDIRECT_STATUS CGI variable is
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] set, e.g. via an Apache Action directive.</p>
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] <p>For more information as to <i>why</i> this behaviour exists, see the <a href="http://php.net/security.cgi-bin">manual page for CGI security</a>.</p>
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] <p>For more information about changing this behaviour or re-enabling this webserver,
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] consult the installation file that came with this distribution, or visit
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] <a href="http://php.net/install.windows">the manual page</a>.</p>
[Sat Apr 02 10:22:54 2011] [error] [client 192.168.0.28] Premature end of script headers: foo.cgi


現在可能な事。
・Perl cgiプログラムの呼び出し OK
・Server side include OK
・コマンドラインからのPHP動作 OK (php foo.cgi と打ち込んで正しく動作する。)
・モジュールとしてのPHP動作 OK(ブラウザからhttp://example.com/test.php 等で正しく動作する。)

やりたいこと
・ブラウザから http://example.com/cgi-bin/foo.cgi 等と打ち込んでphpプログラム foo.cgi を動作させたい。
・ssiから呼び出した php cgiプログラムを動作させたい。

ubuntuの前は、debianで同じことをやっていました。
上手く動作しているdebianと同じようにapache2のsites-available等の設定を行っています。
debianでは上手く動作するのに、ubuntuでは動作できません。

色々と調べてみたのですが、どうしても分かりません。
どなたか、お力をお貸しください。
どうぞよろしくお願いいたします。

オフライン

 

#2 2011-04-02 11:04:33

zagan
メンバ
登録日: 2008-08-12

Re: apache2 PHP5 CGI が上手く動作しません。

/etc/apache2/mods-enabled/mime.conf

#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi .pl

辺りがぁゃしいやうな。

DebianもUbuntuもapache2の設定は変わりませんよ。
# と自宅サーバのリプレイス中。
# なかなかDNSが反映してくれない。

オフライン

 

#3 2011-04-02 11:16:50

Rider2
新しいメンバ
登録日: 2011-04-02

Re: apache2 PHP5 CGI が上手く動作しません。

zaganさん。
ありがとうございます。

さっそく試してみましたが、ダメでした。
debianの方の設定も確認してみましたが、コメントアウトされたままでphp cgiが動作していました。

debianを設定した時に、何か重要なことをやったのかもしれませんが、メモも無くどうしても思い出せません。

オフライン

 

#4 2011-04-02 11:49:32

zagan
メンバ
登録日: 2008-08-12

Re: apache2 PHP5 CGI が上手く動作しません。

念のためにエラーログとアクセスログを確認してみてください。それからapache2は再起動しましたか?
もひとつ

<? phpinfo();?>

とエディタに書いて、info.phpとかいったファイル名でDocumentRootに置いてアクセスし、
https://lh6.googleusercontent.com/_kgkk1_vgPRc/TZaN2vpBU9I/AAAAAAAABMc/ioFlbh1WuFE/phpinfo.jpg
が表示されるか確認してください。
# なお、上記画像はDebianサーバの物です。Ubuntuのものではありません。

オフライン

 

#5 2011-04-02 12:32:42

zagan
メンバ
登録日: 2008-08-12

Re: apache2 PHP5 CGI が上手く動作しません。

PHPのCGIモードでしたね。

/etc/apache2/mods-enabled/mime.conf

AddHandler application/x-httpd-phpcgi .php

上記検証ください。

オフライン

 

#6 2011-04-02 13:23:56

Rider2
新しいメンバ
登録日: 2011-04-02

Re: apache2 PHP5 CGI が上手く動作しません。

zaganさん
ありがとうございます。

もちろんapacheは再起動しています。(^^;
また、動かないのはphp CGIのみで、その他はすべて上手く行っているようです。
最初の質問にも書きましたが、phpモジュールでの動作はOKで、コマンドラインでもphpを実行できます。
また、Perlのcgiも正常に動作しています。

error.logも最初の質問に書いていますので、よろしければご確認ください。

AddHandler application/x-httpd-phpcgi .php

こちらは、拡張子がphpになっていますので、次のように変更して試してみました。

AddHandler application/x-httpd-phpcgi .cgi

するとソースコードがそのまま出力されるようになりました。
拡張子をphpに戻してみても動作できませんでした。

オフライン

 

#7 2011-04-02 13:56:06

zagan
メンバ
登録日: 2008-08-12

Re: apache2 PHP5 CGI が上手く動作しません。

# いまさらですがPHPをCGIモードで動かしたこと無かったので、右往左往してます・・・

Rider2さん による投稿:

もちろんapacheは再起動しています。(^^;

(^^;
念のためって奴で・・・

Rider2さん による投稿:

AddHandler application/x-httpd-phpcgi .php

こちらは、拡張子がphpになっていますので、次のように変更して試してみました。

AddHandler application/x-httpd-phpcgi .cgi

するとソースコードがそのまま出力されるようになりました。
拡張子をphpに戻してみても動作できませんでした。

ソースが表示されるってことはPHPが動いてないってことですよね。
上記一文で混乱してるのですが、「拡張子をPHPに戻しても・・・」とは、実態ファイルの拡張子のことですか?それとも/etc/apache2/mods-enabled/mime.confの設定のことですか?
この時、ソースが表示されるのではなく、ブラウザが白画面(なにも表示しない)なのですか?
また、

AddHandler application/x-httpd-phpcgi .cgi .php

とかしてみたらどんな振る舞いをしますか?

# なぜか自宅サーバのDocumentRootがおかしい・・・

オフライン

 

#8 2011-04-02 14:15:58

Rider2
新しいメンバ
登録日: 2011-04-02

Re: apache2 PHP5 CGI が上手く動作しません。

zaganさん
お忙しい中付き合っていただき、ありがとうございます。

AddHandler application/x-httpd-phpcgi .php

AddHandler application/x-httpd-phpcgi .cgi

上記の両方を試してみました。
.cgiの方では、ソースコードが表示され、.phpの方では、以下のエラーがブラウザに表示されます。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

AddHandler application/x-httpd-phpcgi .cgi .php

上記を試すと、ソースコードが表示されます。

オフライン

 

#9 2011-04-02 14:41:19

zagan
メンバ
登録日: 2008-08-12

Re: apache2 PHP5 CGI が上手く動作しません。

うっすーぃ記憶だと、PHPをCGIモードで動作させる時って、phpコードを書いたファイルの拡張子はphpだったような。。。

Rider2さん による投稿:

.cgiの方では、ソースコードが表示され、.phpの方では、以下のエラーがブラウザに表示されます。

Internal Server Error

これはPHPが動こうとしているけども、基本的な問題があってサーバー上で動作させることができませんぜって言ってるんですよね。

試しに
AddHandler application/x-httpd-phpcgi .php
と拡張子をPHPに指定して、PHPで書かれたcgiファイルの拡張子をphpに置き換えてみたらどうなりますか?

オフライン

 

#10 2011-04-02 15:21:46

Rider2
新しいメンバ
登録日: 2011-04-02

Re: apache2 PHP5 CGI が上手く動作しません。

zaganさん、ありがとうございます。

zagan による投稿:

試しに
AddHandler application/x-httpd-phpcgi .php
と拡張子をPHPに指定して、PHPで書かれたcgiファイルの拡張子をphpに置き換えてみたらどうなりますか?

拡張子をphpに変更すると、CGIではなくモジュールとして動作するようです。

mime.confを指定通り編集しても、削除しても同様に動作します。

CGIとして動作させるために、プログラム1行目に次のコードを書いています。

#!/usr/local/bin/php

このコードがそのまま表示されるのですが、

<?php ~ ?>

の部分は、正常にPHPプログラムとして動作しています。

また、mime.confを指定通り編集しても、削除しても同様に動作することから、CGIでは動作していない様に思います。

いずれにしても、

#!/usr/local/bin/php

の部分が、そのままブラウザに出力されてしまうので、レンタルサーバーやdebianサーバーと同じプログラムが動作できません。

オフライン

 

#11 2011-04-02 15:56:40

favicon.ico
メンバ
登録日: 2010-09-06

Re: apache2 PHP5 CGI が上手く動作しません。

こんにちわー

パッケージでインストールした php5-cgi は /usr/bin/php-cgi なのでスクリプトの1行目は次のようになりますね

コード:

#!/usr/bin/php-cgi
<?php
echo "Hello, World\n";

端末でスクリプトが実行できるか確認してみてください

コード:

$ ./foo.cgi

それでも 500 Internal Server Error になるなら /etc/php5/cgi/php.ini の 822行目あたり

コード:

cgi.force_redirect = 0

にしてみてください

では~~

オフライン

 

#12 2011-04-02 16:28:24

Rider2
新しいメンバ
登録日: 2011-04-02

Re: apache2 PHP5 CGI が上手く動作しません。

favicon.icoさん、ありがとうございます。

上手く行きました。
解決です。(*^-^*)

それでも 500 Internal Server Error になるなら /etc/php5/cgi/php.ini の 822行目あたり

コード:

cgi.force_redirect = 0

にしてみてください

では~~

今度は、私が作ったphpプログラムがエラーを吐くようになりましたが・・・(^^;
でも、それはphpが動作していると言う事なので、本来のデバッグに移れそうです。

皆様、ご協力ありがとうございました。m(_ _)m

オフライン

 

Board footer

Powered by FluxBB