2012-04-10 16 views
15

私は電子メールスケジュールをcronジョブを使用してPHPページで毎日実行しています。リンクを使用してページを実行すると、PHPコードが正常に動作します。cronジョブを使用してPHPファイルを実行する方法

私はcronジョブを使ってPHPスクリプトを実行するとうまくいきますが、いくつかのクエリを実行するとcronジョブはリンクを理解できなくなります。

たとえば:http://www.wetube.org/cron.php?id=01001これで私は毎日これをcronジョブを使って実行しようとすると動作しません。

ただし、クエリを消去するだけで正常に動作します。あなたはこのリンクをcronジョブで動作させるコードを知っていますか?

+0

「クエリを入力する」とはどういう意味ですか?また、あなたは何をcron-jobのコマンドに入れましたか? –

答えて

36

Cronはシェル経由で実行されるコマンドを実行するので、PHPを実行するとローカルパスが使用されます。あなたは次のようなコマンドを使用する必要が

:クエリ文字列を含む

php /home/USER/public_html/cron.php

た場合、または必要である、(それがインストールの場合)の代わりにカールを使用します。

curl http://www.wetube.org/cron.php?id=01001

あなたは可能性がありますあなたのcronスクリプトをインターネットに公開しないように見たいと思っています。あなたのWebディレクトリの外に移動してください。誰かがそれを見つけたら、あなたのcronスクリプトをスパムするようにリロードすることができます。メールのOTS)

+0

ありがとう男 しかし、他にレポートを送信しないように追加するには –

+4

HTTP経由でスクリプトを実行する必要がある場合(最初は悪い考えです)、サーバーに静的な(専用の)IPアドレスがある場合'$ _SERVER ['REMOTE_HOST']'がサーバーのIPアドレスと一致するかどうかを条件検査でcronスクリプトを囲むことによって、サーバーからのアクセスのみを制限します。これは絶対確実ではありません。あなたの最も安全な賭けは、cronスクリプトをあなたのWebディレクトリの外に置くことです。 – wyqydsyq

7

それが実行されなければならないときにも、特定の時刻/日付チェックを追加することができます*私は

curl http://www.wetube.org/cron.php?id=01001&hash=cm349ucKuc023b2ynGyv23ycr23 

とPHPファイル内

if(isset($_GET['hash']) && $_GET['hash']=='cm349ucKuc023b2ynGyv23ycr23'){ 
.... 
stuff to do 
.... 
} 

のようなハッシュを追加します。
* IPをチェックすることができます
* sha512を生成する(私はお勧めします)同じ塩で、たぶん時間が同じで、cronとphpファイルの両方にハッシュを作成し、それらが同じかどうかを確認します。 - ハッカーが再現することは不可能ですあなたが何らかの形で元のハッシュ設定を取得した場合を除いて

関連する問題