1

cronタブを使用してURLからphpファイルを実行したい。私はウェブホスティングを使用しています、そして私はそのようなコマンドを与えます

9 11 9 2 * wget -O /dev/null http://www.domainname.com/cronfile.php

しかし、それは機能しません。なぜこれが機能しないのか教えてください。このコマンドは「cronfile.php」を実行する必要があり、cronから電子メールを受信したくないと思います。

4

2 に答える 2

0

試す:

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];
于 2013-02-10T17:31:11.910 に答える
0

ターゲットページがローカルかどうかによって異なります。そうである場合は、コマンドを使用できますphp5 /path/to/php/file.php。そうでない場合は、wgetのアプローチは正しいですが、私はそのように呼んでいます:/usr/bin/wget --quiet --output-document=/dev/null http://www.server.com/page.php。お役に立てれば。(これの複製の可能性があります)

于 2013-02-10T17:33:34.077 に答える