- ベストアンサー
質問:cgiのcron設定について(コアサーバー)
- 初めてcronを使うためどこでつまずいているのか分かりません。
- 今、上記のような状態で、mixiに投稿できずに下記のエラーメールが送られてきます。
- 間違っている箇所がありましたら、ご指摘をよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
○CGIは、実行すると、HTTPのヘッダ+本体データ を標準出力に出力する、という仕様。 ○cronは実行しているプロセスから標準出力に出力があるとその内容をオーナーにメールで送るという仕様 ということで、 > 下記のエラーメールが送られてきます。 これは「エラーメール」ではありません。「正常な動作」によるメールです。 少なくとも、質問文にある内容で明かな間違いはありません。ちゃんとcronが動作しperlのスクリプトが実行されています。 なので、 ○メールが来るのは、CGIとしてHTMLを出力するプログラムをそのまま使っているため。 普通は出力を抑制するとか、リダイレクトするとかする。必要なログは別ファイルに残したりする ○サーバー上で使うことを前提にしているCGIをローカル環境で動作させて、期待通り動くかどうかは、スクリプトの作り方次第。そもそも無理なケースもある。 実行ユーザーとその権限も関係するかもしれない ○cronで実行するときは環境変数はすべて未定義の状態になる。環境変数に依存すること(PATHとかHOMEとか)をやっていると、期待通りに動かない。 といったあたりが疑われます。
その他の回答 (1)
- okbakabaka
- ベストアンサー率30% (22/73)
>(cron.shの属性644) ・cronで動かすスクリプトに実行権がないのはなぜ? ・index.cgiを直接cronで動かさずにcron.sh経由で動かすのは何故? >/usr/local/bin/perl /virtual/マイアカウント/mixid/index.cgi ・index.cgiに対して実行権を付けているのに何故/usr/local/bin/perlを付ける? >index.cgiの1行目の記述は #!/usr/bin/perlとして >/usr/local/bin/perl /virtual/マイアカウント/mixid/index.cgi さてPerlがあるのは /usr/bin/perl /usr/local/bin/perl さてどっち? 質問者はもうcron以前の問題でいろいろ間違っているぞ。 cronの使い方以前の問題。
お礼
ありがとうございました。
補足
ありがとうございます!! >・cronで動かすスクリプトに実行権がないのはなぜ? 他の方が.shを644で設定して動いたとのことでしたので644にしました。 755や777も試したのですがエラーが出ます。 /virtual/マイアカウント/cron1.sh: cannot execute binary file >・index.cgiを直接cronで動かさずにcron.sh経由で動かすのは何故? CORESERVERは、cronジョブで、直接cgiを動かせないようです。 サーバーの仕様説明に ※ 「分 時 日 月 曜日」で指定した時間に「/virtual/マイアカウント/~」で指定したシェルスクリプト(/bin/sh)を実行します。とあったので、.shを置いています。 実際に直接index.cgiを指定したのですがエラーすら吐き出さず… >/usr/bin/perl /usr/local/bin/perl さてどっち? サーバーの仕様説明に perl : /usr/bin/perl、/usr/local/bin/perl と、あったのでどちらでも良いのかと気にしておりませんでした。 ご指摘どおり/usr/bin/perlで揃えて試して/usr/local/bin/perlで揃えて試したのですが、エラーが出ます。 >index.cgiに対して実行権を付けているのに何故/usr/local/bin/perlを付ける? シェルスクリプトの例で以下のように記載があったので末尾をindex.cgiに変更して記述しました。 ここがおかしいのでしょうか? -----例------ #!/bin/sh #PERL /usr/local/bin/perl /virtual/マイアカウント/cron_exe.pl exit ----例終了---- index.cgiを644に変更しましたが、エラーが出ます。 index.cgiのあるディレクトリは777です。 どれを試しても/virtual/マイアカウント/cron1.sh: cannot execute binary file となりました。 今、cron1.shを644に直しても/virtual/マイアカウント/cron1.sh: cannot execute binary file の状態です。
お礼
kmeeさんの回答を頂いて、さらに下記のメールも届くようになったので、設定は間違ってないのだと実感できました。 IDも合ってますし…CGIはさっぱり分からないので諦めます。 本当にありがとうございました。 mixiユーザーIDを指定してください Content-type: text/html <html> <head> <title></title> </head> <body> OK</body> </html>