2011-06-20 9 views
0

太平洋時間午前3時5分に、1日に1回実行する必要があるPHPスクリプトがあります。私は現在、自分のサイトのルートに(http://example.com/script.phpのように)スクリプトを持っているので、ブラウザでナビゲートしている人は誰でも実行可能です。私のサーバーは、このようにレイアウトされていますCronのみでPHPファイルを実行

/home/[user]/example.com/ example.comフォルダは、そのドメインのルートである

。それは私の場合には、私は[ユーザー]フォルダに移動しますので、私は、パブリックディレクトリ外のスクリプトを動かすべきであると言われていた

PHP & cron: security issues

:私はこれについて、他のスレッドを読んで。

は/ usr/local/PHP5/binに/ PHP /home/[user]/example.com/script.php

(私が使用している偽:現在、私のcronジョブコマンドは次のようになります当然の名前)、私は単純にファイルを移動し、にコマンドを変更します。

/home/[user]/script.php

は/ usr/local/PHP5/binに/ PHPとはなり正常に実行されていますが、一般に公開されていませんか?スクリプトはすでにCronで動作しているので、インクルードする必要があるファイルに絶対パス(相対パスではなく)を使用して既に設定されているので、これは単純な移動と編集でなければなりません。

+3

試してみてください。それはあるはずです –

+2

それを試してみてください?ホスティングを共有していて、パブリックディレクトリの外部にファイルを移動できない限り、何も問題はありません。 –

+0

私は共有ホスティングをしていますが、パブリックディレクトリの外にファイルを移動できます。私はパブリックディレクトリツリーの外にある/ home/[user]にアクセスできますので、そこに移動できます。ただ試してみると唯一の問題は、明日3時5分まで働いているのかどうか分からないことです。 – HaLo2FrEeEk

答えて

-1

私がやったことは、パブリックディレクトリからホームフォルダに移動することだけでした。 CRONは引き続きそこからアクセスして実行することができます。助けてくれてありがとう。

+0

なぜこれをdownvotedですか? – yoeriboven

7

あなたは、いくつかのオプションがあります。

:どのようなモードスクリプトの実行

<?php 

if(! isset($argv)) 
    die("cannot run!"); 
  • チェック:あなたのウェブディレクトリ

  • のうち、例えば、いくつかのチェックを追加することを

    • 移動
      $isCLI = (php_sapi_name() == 'cli'); 
      if(!$isCLI) 
          die("cannot run!"); 
      
  • +2

    $ argvが設定されているかどうかを確認するだけです。通常のWebリクエストでは設定されません。 – datasage

    +0

    ああ、そうです。 – ariefbayu

    +0

    設定に応じて '$ argv'は' register_globals'で設定されます。私はそれに頼るつもりはありません;)使用されたsapi( 'PHP_SAPI === 'cli'')を探している方が安全だと感じています。 – KingCrunch

    0

    それはたとえば、MySQLの剪定のためのシンプルなものをやっている場合は、スクリプトの目的について教えていただけます:

    5 3 * * * * root mysql -u username -e "UPDATE users SET days = days-1;" 
    

    は同様に、より良いかもしれません:

    5 3 * * * * root /usr/local/php5/bin/php -r "$normal = 'php';code();$here" 
    

    は、トリックを行うことができますか?

    +0

    複雑ではありませんが、単純なmysql操作以上のことをしています。外部APIから情報を取得し、それを読み込み、フォーマットし、重複するエントリをチェックし、重複していない場合はデータベースに挿入します。それは私がPHPで行う必要があることです。ちょうど何かが起きてCronが実行されないので、私は更新を強制しなければなりません(今朝起こった) – HaLo2FrEeEk

    関連する問題