- PR -

cgi-binディレクトリ以下でのphpの動作

1
投稿者投稿内容
やす
会議室デビュー日: 2003/06/07
投稿数: 9
投稿日時: 2004-05-07 22:35
OS:Redhat9 WWW:Apache2.0.49 PHP:4.3.5を使用しています。
ドキュメントルートのhtdocs以下のディレクトリではphpは正常に動作しますが
scriptaliasで定義しているcgi-bin以下では同じphpが動作しません。

httpd.confのscriptalias設定は以下のようにしております。
どのようにしたらcgi-binでも動作させることができるのでしょうか。
<Directory "/***/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-05-08 01:17
<Directory "/***/cgi-bin">

どこからこんな情報を引っ張り出したのか・・・(笑)
これはお話になりません。

Options None

これがマズいですな。

Options ExecCGI

は最低必要かと。
ひとむ
常連さん
会議室デビュー日: 2003/08/28
投稿数: 38
投稿日時: 2004-05-08 01:22
ScriptAliasに指定したディレクトリにある画像が表示できないのと
同じような理由だと思います。

以下のページが参考になると思いますよ。
http://mm.apache.or.jp/pipermail/newbie/2003-June/003806.html

当方は上記ページを参考にしてapache1.3系、PHP4.0.6でcgi-binにおいたPHPファイルを、正常に表示できました。

[ メッセージ編集済み 編集者: ひとむ 編集日時 2004-05-08 01:29 ]
やす
会議室デビュー日: 2003/06/07
投稿数: 9
投稿日時: 2004-05-09 00:15
コブラさん、ひとむさんコメントありがとうございます。

> <Directory "/***/cgi-bin">
> どこからこんな情報を引っ張り出したのか・・・(笑)
> これはお話になりません。
>
> Options None
>
> これがマズいですな。

書き方がまずかったのかどうかわかりませんが
ScriptAlias /cgi-bin/ "/***/cgi-bin/"
と記述してありますのでOptions ExecCGIでなくてもよいとおもったのですが
やはり必要なのでしょうか。

ひとむさんへ
ScriptAliasで指定したディレクトリ配下は実行ファイルとなるのは理解してましたが
phpのファイルを実行ファイルとして扱われるからいけないのでしょうか。
phpのファイルには実行権限(x)を与えなくても動作するのでおかしくなる?

ScriptAliasでcgi-binを指定しないで使用する方法がいいということですよね?
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-05-09 01:20
ScriptAlias を使用した場合、やす様が言われるように、参照先のディレクトリに Options ExecCGI を指定する必要ありません。

> phpのファイルには実行権限(x)を与えなくても動作するのでおかしくなる?

実行できませんエラーでも発生するのでしょう。
ひとむ
常連さん
会議室デビュー日: 2003/08/28
投稿数: 38
投稿日時: 2004-05-09 01:57
ScriptAliasでcgi-binを指定した場合、 Apache は、このディレクトリ中の全てのファイルを CGI プログラムであると仮定します。だからエラーになるのでしょう。

エラーになった際の、Apacheのerror_logを見てると何かわかるかもしれません。

当方の環境で検証した結果は以下の通りです。参考までに。(ScriptAliasを設定したまま)
1./cgi-bin/test.php (phpinfoのみ)のパーミッションを644
  ブラウザ上は、forbidden。
  error_logは 「file permissions deny server execution」

2./cgi-bin/test.php (phpinfoのみ)のパーミッションを755
  ブラウザ上は、Internal Server Error
  「(Exec format error、Premature end of script headers」
やす
会議室デビュー日: 2003/06/07
投稿数: 9
投稿日時: 2004-05-12 22:21
あんとれさん、ひとむさんコメントありがとうございます。

当サーバ環境では以下のとおりになりました。
1./cgi-bin/test.php (phpinfoのみ)のパーミッションを644
  ブラウザ上は、Internal Server Error
  error_logは 「Premature end of script headers: test.php
         (13)Permission denied: exec of '/test.php' failed」

2./cgi-bin/test.php (phpinfoのみ)のパーミッションを755
  ブラウザ上は、Internal Server Error
  error_logは 「Premature end of script headers: test.php
         (Exec format error: exec of '/test.php' failed」

時間をみてScriptAliasをつかわないでcgi-binを設定してみます。
1

スキルアップ/キャリアアップ(JOB@IT)