[PHP-users 13227] Re: --enable-force-cgi-redirect を使ったCGIが動かない

Masaki NOHTOMI php-users@php.gr.jp
Wed, 12 Feb 2003 17:34:14 +0900


納富です。
原因の一部が自己解決しました。

> Action php-script /cgi-bin/php
> AddHandler php-script .php
> 
> を追加。
> Action php-script /cgi-bin/php
> とはCGI版PHPの本体のことみたいなので
> DocumentRoot(私の場合/home/www)以下のcgi-binディレクトリにコピー
> # cp sapi/cgi/php /home/www/cgi-bin/php
> 
> whomai.php の #!/usr/bin/phpを削除し
> パーミッションを 600にして
> http://homer/~narf/cgi-bin/whoami.php に再アクセスすると
(snip..)

> というメッセージがでてきて、スクリプトが動作しませんでした。
> cgi-bin ディレクトリにあるとだめなのかと思い
> ExecCGIを指定していない
> 上位ディレクトリにコピーしてやってみても同じでした。

httpd.confのメインのサーバ設定部分に
AddHandler cgi-script .cgi
が指定されていたので 
httpd.confのActionディレクティブを

Action php-script /cgi-bin/php.cgi
AddHandler php-script .php
と指定し直し
cgi-bin以下においたCGI版PHPパーサには
http://homer/cgi-bin/php.cgi
と拡張子をつけなければいけなかったようです。

とりあえずそれで、
http://homer/~narf/ 以下に whoami.php

<?
system("whoami");
?>

というスクリプトをおき パーミッションを644にして
http://homer/~narf/whoami.php
にアクセスしてみると
www 
という答えが返ってきます。

スクリプトのオーナは narf なのですが
考えてみたら
Action php-script /cgi-bin/php.cgi で指定したphp.cgiの
オーナーは www なのでこれが正しいことまでは理解できました。

しかし、SuEXECとは関係ないと思われる別の問題が発生しました。

DucumentRoot直下の
http://homer/whoami.php
という上記とまったく同じ内容のスクリプト(オーナー: www パーミッション: 644)
をおきブラウザからアクセスすると

No input file specified. 

とにべもない答えが帰ってきます。

そこで
Alias /narf/ "/home/narf/public_html/"
を付け加え
http://homer/narf/whoami.php
からアクセスしてみるとやはり
No input file specified.
になります。

わかりずらいとは思いますが要約すると
------------------------------
Apacheの設定で
Action php-script /cgi-bin/php.cgi
AddHandler php-script .php
Alias /narf/ "/home/narf/public_html/"
を加え
http://homer/cgi-bin/php.cgi
にCGI版PHPをおき、これ経由で *.phpを起動させようとした場合
まったく同じPHPファイルを
http://homer/~narf/whoami.php
からアクセスするとOKで
http://homer/narf/whoami.php
のように(~)なしでアクセスすると
No input file specified. 
というエラーになる
------------------------------
といううことです。

何か追加の設定が必要なのでしょうか?
よろしくお願いします。

-- 
納富正樹 / Masaki NOHTOMI <narf@alcnet.jp>