アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< IISでFlushが動作しない 質問一覧 GDを使ったレーダーチャートの作成 >>
  • キーワードが設定されていません

  • 0P
cronによるPHPの実行について

cronを使ってPHPスクリプトを定期的に実行しようとしております。
サンプルとして実行すると別ファイルに
実行した日時を吐き出すスクリプトを書きました。

ブラウザ上で実行するとちゃんと処理されます。
ただしcronを使って呼び出すと上手く動作しません。
パーミッションも700にしてあります。

cronの実行ファイルのソースが間違っているのでしょうか?

サーバーはハッスルサーバを使っております。
//cron.sh

#!/bin/sh
/home/ユーザー名/public/www/test.php
exit

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

QcronによるPHPの実行について hayato0210  [02月26日 09時01分] 
┣Re:cronによるPHPの実行について shimix  [02月26日 09時39分] 
┃┗Re:Re:cronによるPHPの実行について hayato0210  [02月26日 18時38分] 
┃  ┗Re:Re:Re:cronによるPHPの実行について shimix  [02月26日 19時22分] 
┃    ┗Re:Re:Re:Re:cronによるPHPの実行について signal  [02月27日 03時01分] 
┣Re:cronによるPHPの実行について moeten  [02月26日 09時44分] 
┗Re:cronによるPHPの実行について hayato0210  [03月03日 05時36分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:cronによるPHPの実行について

ハッスルサーバは使ったことがないのでよくはわかりませんが、一般的にはcronで起動する場合には「コマンドライン」での実行にしないといけません。なのでcron.shに

 php -f /home/ユーザー名/public/www/test.php

もしくは

 /usr/local/bin/php /home/ユーザー名/public/www/test.php

などと書くのではないでしょうか?

#もしくは1行目に(Perlスクリプトみたいに)「#!/usr/local/bin/php」を書いたりとか・・



(追記)
いつも思うのですが、少しは調べてから質問された方がいいんじゃないかと思います。

  http://www.google.co.jp/search?hl=ja&q=%E3%83%8F%E3%83%83%E3%82%B9%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%20cron%20php

Re:Re:cronによるPHPの実行について

お二方ともご回答ありがとうございます。
すみません><
調べてはいるのですがいつも見つからないんです・・・。
面倒だからとココで聞いているわけでは御座いません。
後、yahooではなくgoogleを使う人が多いのですが(よくググレと言う)
googleの方がよいのでしょうか?

調べてみますと私の勘違いでした。
PHPスクリプト自体は実行出来ていたみたいです。
cronの実行結果をメールで送ってみたら「ファイルが開けません。」
を返ってきておりました。

CSVに書き込む処理以外にCSVを配列に読み込む処理をしており
ここが開けなかった場合の文字を変えてみたのですが
その文字が返ってきました。

  1. // csvファイルの取得
  2.   $rfile = @file("file.csv") or die("ファイルが開けません。");
  3.   foreach ($rfile as $line) {
  4.     $warr = explode(",", trim($line));
  5.     foreach ($warr as $key=>$value) {
  6.       $warr[$key] = trim($value);    // 空白の除去
  7.     }
  8.     $array[] = $warr;
  9.   }

パーミッションはCSV、ソースとも755です。

Re:Re:Re:cronによるPHPの実行について

>調べてみますと私の勘違いでした。
>PHPスクリプト自体は実行出来ていたみたいです。
>cronの実行結果をメールで送ってみたら「ファイルが開けません。」
>を返ってきておりました。

ほう・・。これは珍しいですね。ハッスルサーバはphpスクリプトをそのままコマンドラインで実行できるんですね。



閑話休題。

パーミッションによるエラーなのか、ファイルが見つけられないのか・・はチェックされてないようですね。file()で読み込む前にfile_exists()で存在をチェック、is_readable()で読み込みパーミッションがあるかをチェックして、メッセージを出力してみれば状況はわかると思います。


まずは、そういうことを試行してください。




(蛇足)
>パーミッションはCSV、ソースとも755です。

データファイルに755は・・。無駄にパーミッションを上げるべきではないと思います。不要なフラグは立てないようにしてください。多分スクリプトは(CGIモード、suExecのようですから)705が指定だと思います(∴データは604でいいですよね)。

Re:Re:Re:Re:cronによるPHPの実行について

相対パスで指定してあるようなので、カレントが違っているだけのような気がします

Re:cronによるPHPの実行について

hayato0210さんこんにちは。

test.php自体が実行されないという感じでしょうか?

  1. #!/bin/sh
  2. php /home/ユーザー名/public/www/test.php

でもだめでしょうか?


もしくはファイル取得コマンドwgetを使用して

  1. wget http://localhost/test.php

はいかがでしょうか?

Re:cronによるPHPの実行について

戸惑っていたのですがCSVの読み込みを絶対パスにしたら出来ました。

ご回答ありがとうございました。
IISでFlushが動作しない 質問一覧 GDを使ったレーダーチャートの作成