
Ubuntu日本語フォーラム

ログインしていません。
借りているレンタルサーバーと同じ環境をローカルに作るために次の様に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では動作できません。
色々と調べてみたのですが、どうしても分かりません。
どなたか、お力をお貸しください。
どうぞよろしくお願いいたします。
オフライン
/etc/apache2/mods-enabled/mime.conf
#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl
辺りがぁゃしいやうな。
DebianもUbuntuもapache2の設定は変わりませんよ。
# と自宅サーバのリプレイス中。
# なかなかDNSが反映してくれない。
オフライン
zaganさん。
ありがとうございます。
さっそく試してみましたが、ダメでした。
debianの方の設定も確認してみましたが、コメントアウトされたままでphp cgiが動作していました。
debianを設定した時に、何か重要なことをやったのかもしれませんが、メモも無くどうしても思い出せません。
オフライン
念のためにエラーログとアクセスログを確認してみてください。それからapache2は再起動しましたか?
もひとつ
<? phpinfo();?>
とエディタに書いて、info.phpとかいったファイル名でDocumentRootに置いてアクセスし、
が表示されるか確認してください。
# なお、上記画像はDebianサーバの物です。Ubuntuのものではありません。
オフライン
PHPのCGIモードでしたね。
/etc/apache2/mods-enabled/mime.conf
AddHandler application/x-httpd-phpcgi .php
上記検証ください。
オフライン
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に戻してみても動作できませんでした。
オフライン
# いまさらですが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がおかしい・・・
オフライン
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
上記を試すと、ソースコードが表示されます。
オフライン
うっすーぃ記憶だと、PHPをCGIモードで動作させる時って、phpコードを書いたファイルの拡張子はphpだったような。。。
Rider2さん による投稿:
.cgiの方では、ソースコードが表示され、.phpの方では、以下のエラーがブラウザに表示されます。
Internal Server Error
これはPHPが動こうとしているけども、基本的な問題があってサーバー上で動作させることができませんぜって言ってるんですよね。
試しに
AddHandler application/x-httpd-phpcgi .php
と拡張子をPHPに指定して、PHPで書かれたcgiファイルの拡張子をphpに置き換えてみたらどうなりますか?
オフライン
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サーバーと同じプログラムが動作できません。
オフライン
こんにちわー
パッケージでインストールした 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
にしてみてください
では~~
オフライン
favicon.icoさん、ありがとうございます。
上手く行きました。
解決です。(*^-^*)
それでも 500 Internal Server Error になるなら /etc/php5/cgi/php.ini の 822行目あたり
コード:
cgi.force_redirect = 0にしてみてください
では~~
今度は、私が作ったphpプログラムがエラーを吐くようになりましたが・・・(^^;
でも、それはphpが動作していると言う事なので、本来のデバッグに移れそうです。
皆様、ご協力ありがとうございました。m(_ _)m
オフライン