前回も関連した質問でアドバイスを頂き大変参考になりました。
今回その延長線上で、XAMPP(Windows)の Apatch環境では
動作することを確認したスクリプトが Webサーバー(lolipop)で
実行できないという問題にぶつかり再び質問させて頂きます。
やりたいことは html中の phpスクリプトで引数を 別 cgi
に渡して実行しその cgiのプリント出力を php スクリプトに
戻して同一画面に表示させるというものです。
テスト用の htmlファイル中の phpスクリプトの主要部分は
<?php $result = exec("/usr/bin/perl $pcgi $pstr", $out, $rtn); if($rtn===0){ echo $out; }else{ echo "fail";} ?>
のような流れです。
($pcgi は test.cgi へのパス $pstr は引数)
一方、perl cgi(test.cgi)は
#!/usr/bin/perl my $argstr = $ARGV[0]; print "ARGV:$argstr"; 1; ```のように動作確認のため受け取った引数をプリントするだけで、 親の htmlファイルを閲覧したらその引数が表示されることを 期待しています。 localhost で問題なく動作することを確認したファイルを、 Webサーバーにアップロードして 属性を それぞれ 755 とか 604 (lolipopの指定値)で実行しましたが、 どうしても $rtn が 0になりません。(返値 127) Webサーバーのルートの .httaccess は ```ここに言語を入力 <FilesMatch ".html$"> AddHandler php5.2-script .html AddType application/x-httpd-php .html Options +ExecCGI +Includes AddType application/x-httpd-cgi .html AddType text/x-server-parsed-html .html </FilesMatch>
と言う指定をしています。
現在は htmlファイルと cgiファイルを同一ディレクトリに
置いておりますが、test.cgi のパスの指定が問題かと思い、
$fpath = getcwd() . "/test.cgi"; で得られたフルパス
(例:/home/users/0/sub.jp-xxxxx/web/usr/bin/test/test.cgi)から
test.cgi までいろいろ試しましたが、全て 127が返されました。
運用時は 階層の異なる複数の htmlから test.cgiを呼ぶことを
想定していて、localhostでは相対アドレス指定で
動作確認できていますが、Webサーバーでは同一ディレクトリでも
動作しないのでお手上げ状態です。
どなたかアドバイスを頂ければ幸甚です。
回答1件
あなたの回答
tips
プレビュー