• 締切済み

CGIモードのphpスクリプトが400で動くわけ

さくらインターネットのレンタルサーバを利用しています。 さくらに聞け!、と言われてしまうかもしれないですが教えてくれると助かります。 困っているのと技術的な興味の半々です。 私が利用している「プロ」プランの特徴はユーザ権限でapacheが起動されていることです。 (ユーザ毎にapacheが起動されていると考えられます。http://tanaka.sakura.ad.jp/archives/000971.html) PHPはCGIモードで設定されていてPHPスクリプトはパーミッション400で動作します。 同じディレクトリにperlスクリプトもあるのですがこれは少なくとも500を与えないと動作しません。 そこでこの動作条件の違いの原因を考えてみて思いついたのですが、 両者の違いとしてPERLスクリプトの先頭にはperlの位置が明示されているがPHPスクリプトのそれにはない。 それからCGIモードでPERLを動作させる場合とCGIモードでPHPを動作させる場合とではhttpd.confの記述内容が違う。 (ExecCGI, AddHandler, AddType, Actionなど) 質問1 httpd.confに、PHPを設定するようにPERLを設定すれば PERLスクリプトも400で動作するようになるのでしょうか? またその場合先頭行でperlの位置を明示する必要もなくなりますか? (テスト環境がないためテストはしておりません)

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>間違いなくCGIモードで動作しています これはどうやって確認したのかな? 通常のHTML埋め込み型で駆動してしまうようならCGIではない筈だけど?

mywatertan
質問者

お礼

常駐プロセスでもいるのかな?と推測したのですが ps auxwwなどと実行してもそれらしきプロセスは見つかりませんでした。

mywatertan
質問者

補足

解決しました。 ps auxwwをタイミングを見計らって実行したところ捕まえることができた。 username 37919 0.0 0.3 14332 8880 ?? R 1:19PM 0:00.05 php index.php (php-x.x.x) apacheがphpスクリプトをCGI経由でphpに引き渡すときに スクリプト本体以外で実行されるphpプロセスがあるということが確認できました。

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4902/10363)
回答No.1

CGIモードで動いているというのが勘違いでしょう。 apacheモジュールモードで動いていると思いますよ。 phpinfo()表示のServerAPIのところはどうなってますか?

mywatertan
質問者

お礼

回答ありがとうございます。 残念ながら間違いなくCGIモードで動作しています。 さくらは自分で設定を変えない限りCGIモードで動作するんですよ。 Server API CGI

すると、全ての回答が全文表示されます。

関連するQ&A