cronタブを使用してURLからphpファイルを実行したい。私はウェブホスティングを使用しています、そして私はそのようなコマンドを与えます
9 11 9 2 * wget -O /dev/null http://www.domainname.com/cronfile.php
しかし、それは機能しません。なぜこれが機能しないのか教えてください。このコマンドは「cronfile.php」を実行する必要があり、cronから電子メールを受信したくないと思います。
試す:
9 11 9 2 * wget -O /dev/null 'php -f /path/to/cronfile.php'
または「cronfile.php」に追加します
#!/usr/bin/php
実行権限を付与します。
chmod +x 'cronfile.php'
コマンドラインからPHPを実行する方法の詳細については、マニュアルを参照してください。
更新1
パスに問題がある可能性はありますか?ファイルを編集しようとすると、vi path/to/file.php
開くことができますか?もしそうなら、手動で実行してみてください、php -f /path/to/cronfile.php
あなたはエラーを生成しましたか?そうでない場合は、phpファイルに次を追加します。
error_reporting(E_ALL);
ini_set('display_errors', 'On');
更新2
あなたは少し混乱していると思います。なぜURL経由で実行しているのですか?何を達成しようとしていますか?
http://www.domainname.com/cronfile.phpを「実行」すると、ファイルはローカルで実行されなくなり、PHPサーバー側のHTML埋め込みスクリプト言語になります。つまり、http://www.domainnameを実行する場合です。 com / cronfile.php viローカルcrontabの場合、ファイルは、ブラウザでこのURLを開く場合と同じように、ローカルではなくリモートサーバー(www.domainname.com)で実行されます。
静的スクリプトである限り、ローカルで実行することをお勧めします。URLを介して実行すると、 URLハイジャックを使用したコードインジェクションに対して脆弱になります。それについて読むことをお勧めします。
更新3
パラメータを追加するには、以下を使用します$argv
。
php -f /path/to/cronfile.php hello_world
そしてphpファイルで:
echo $argv[0];
ターゲットページがローカルかどうかによって異なります。そうである場合は、コマンドを使用できますphp5 /path/to/php/file.php
。そうでない場合は、wgetのアプローチは正しいですが、私はそのように呼んでいます:/usr/bin/wget --quiet --output-document=/dev/null http://www.server.com/page.php
。お役に立てれば。(これの複製の可能性があります)