アプリ版:「スタンプのみでお礼する」機能のリリースについて

Perlからbashのファイルを呼び出そうとしています。
sendmail2.cgiは、呼び出せていまが、
sendmail3.cgiは、呼び出せません。


bashのファイル自体は、./(bashファイル)とやると実行できます。

パーミッションは、

sendmail3.cgi 655
mail_plain.sh 755

sendmail2.cgi 705
mailsend.sh 705

です。

パスの設定の問題かとも思ったのですが、よくわかりません。
宜しくお願いします。

===sendmail2.cgi=============

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>sendmail test</P>\n";
print "mailtest\n";
print "</HTML>\n";
exec('/home/httpd/wwwroot/yoshida/mailsend.sh');

exit(0);
==============================

===sendmail3.cgi=============
#!/usr/bin/perl

exec("/home/httpd/wwwroot/bbstest/mail_plain.bash");

exit(0);
==============================

A 回答 (4件)

#2 です。


問題の原因が

a. mail_plain.bash が起動出来ないのか
b. mail_plain.bash の内部で問題が発生しているのか

のどちらなのかを調査されてみてはいかがでしょうか?
上記のいずれかによって対策も変わってくるのではないかと思います。
例えば、以下の様なスクリプトを流してみるとか...

#!/usr/bin/perl
my(@buf);
my($rc);
unless( open S, '/home/httpd/wwwroot/bbstest/mail_plain.bash 2>&1|' ) {
print "Status: 500 ERROR\n";
print "Content-Type: text/plain\n\n";
print "ERROR.\n";
exit(0);
}
@buf = <S>;
close S;
$rc = $?;
print "Status: 200 OK\n";
print "Content-Type: text/plain\n\n";
print "exit status = ",$rc,"\n";
print @buf;
exit(0);
    • good
    • 0
この回答へのお礼

具体的なアドバイスを頂き有難うございます。
上のものを試してみたら、

exit status = 512
Can't create temporary directory!

でした。
mail_plain.bashで作業用のディレクトリを作るようにしていたのですが、そこがうまくいってなかったんですね。
Perlの質問する場所なのに、シェルが原因だったなんて、勉強不足でした。
大変お世話になりました。

お礼日時:2005/06/09 14:09

#1です。

成る程。

ではこれでどうですか?
("sh /home/httpd/wwwroot/bbstest/mail_plain.bash");
    • good
    • 0
この回答へのお礼

アドバイス頂いておいて、大変恐縮なのですが、
原因はシェル側でした。
シェルをそのまま実行した際、見かけ上うまくいっていたので勘違いしていました。
上のような書き方もできるというのは参考になりました。
有難うございました。

お礼日時:2005/06/09 14:28

少々うかがいます。



> sendmail3.cgi 655

とありますが、実行パーミッションを立てないのですか?

この回答への補足

実行パーミッションとは、オーナの部分ですね?
やってみましたがダメでした。

補足日時:2005/06/07 18:38
    • good
    • 0

ファイル名が違うようですが


.bashではなく.shでは?

("/home/httpd/wwwroot/bbstest/mail_plain.bash");
    ↓
("/home/httpd/wwwroot/bbstest/mail_plain.sh");

この回答への補足

すみません。書き間違いでした。
正しくは、mail_plain.bash(755)でした。

system("");や`(バッククウォート)`も試しましたがうまくいきません。
うまくいくと、メールが届くはずなんですが。

サーバの方の、httpd.confにAddHandlerでcgi-scriptに.shと.bashがないのが原因かと思ったのですが、これも違いました。

補足日時:2005/06/07 12:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!