CPanelを使用してcronジョブでPHPファイルを実行する


102

私はCPanel内のcronジョブを使用してPHPスクリプトを実行しようとしています-これは正しい構文ですか?

/usr/bin/php -q /home/username/public_html/cron/cron.php >/dev/null

cronが完了したことを示す電子メール通知が届きません。PHPファイルで何か特別なことをする必要がありますか?


25
多くのプロジェクトがCpanelでホストされており、必要に応じてcronジョブを実行する方法を知る必要があるため、これは非常に関連があると思います
William

7
サーバー障害またはスタックオーバーフローでcPanelが許可されていない場合、それに関する質問はどこにあるべきですか?
ブリムストーン2016

8
この質問はStackOverflowのための「オフトピック」として分類さが、私が今までここに1を持っていた最も活発な質問でされたことを.....私はそれが他の人を助け願っています:)かなり皮肉
ZABS

ありがとう@Tatu Ulmanenそれは私のために働きます!
Tushar Rmesh Saindane 2017

回答:


66

crontabシステム:

  • /usr/bin/phpPHPバイナリパスである(:FreeBSDのいくつかのシステムの元で異なる/usr/local/bin/php、Linuxは:/usr/bin/php
  • /home/username/public_html/cron/cron.php あなたのphpスクリプトのパスでなければなりません
  • /dev/null cron出力である必要があります。例: /home/username/stdoutx.txt

したがって、cron出力を表示して、cronを監視できます /home/username/stdoutx.txt


1
私はこれを現在使用していますが、機能しますが、電子メール通知がまったく届かないのはなぜですか?php /home/username/public_html/cron/cron.php注意次の行をPHPスクリプトの先頭に配置する必要がありました#!/ usr / bin / php -q
Zabs

cronjobでメールを送信する場合は、php mail()を使用する必要があります。シェルスクリプトまたはphpを使用しない限り、cronjobに自動メールシステムがあるとは思いません。
ソミーA

1
cPanelの[cronjobs]タブをクリックすると、ページに2つのボックスがあります。1つは実行するコマンド用のボックスで、もう1つは出力の送信先の電子メールアドレス用です。これはcPanel 11にあります
。– user3640967

2
完全なコマンドとは何ですか?すべてのオプションを含む1行の完全なコマンドを意味します。
Auj

@SomyA javaスクリプトファイルを実行するコマンドを教えてください。
ナレンダーレディ2018

104

このコマンドを使用して、このためのcronジョブをアクティブ化しました。

/usr/bin/php -q /home/username/public_html/yourfilename.php

godaddyサーバー上で動作します。


2
何の-q略ですか?
Bhavik Shah 2015

4
@BhavikShahによればphp.net/manual/en/features.commandline.options.php-q静かなモードのためのものである抑制するHTTPヘッダ出力
ウィリアム

@ウィリアムありがとう。とった。
Bhavik Shah 2016

29

>/dev/null cronがメールを送信しないようにします。

実際には、phpcronに何かを出力するだけでなく、ログ自体に注意を払うようにスクリプト自体を作成する方が良いと思います


どうすればいいですか?とにかくcronTabsは何かに出力しませんか?私も>/dev/null 2>&1エンディングでやります...
ThomasK

@ThomasKこのようなタスクを実行すると、/path/to/file.php > /dev/null沈黙します。
k102 2013年

19

これが最も簡単な方法です。

php -f /home/your_username/public_html/script.php

スクリプト出力をファイルに記録する場合は、コマンドの最後に次のように追加します。

>> /home/your_username/logs/someFile.txt 2>&1


16

これが方法です:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null

11

このcron行は、cpanelを使用してhostgator VPSで動作しました。

/usr/bin/php -q /home/username/public_html/scriptname.php

10

CPanelで/ usr / bin / phpを使用すると、「cli」ではなく「cgi-fcgi」バイナリとしてコンパイルされるため、問題が発生しました。/ usr / local / bin / phpを使用するか、パスの最初にあるため、代わりに「php」を使用してください。

php /path/to/script.php

スクリプトを実行可能ファイルとして実行する場合は、+ x permsを指定し、スクリプトの最初の行として次を使用します。

#!/usr/bin/env php

6

あなたの問題がパスとphpバイナリにもあることを願っています。古い回答に従ってパスを修正した場合は、cronジョブの実行中にphpコマンドではなくphp-cliを使用してください。

php_sapi_name()返品できない場合もございcliます。以下のような他のその帰国のものcgi-fcgiなど

/usr/bin/php-cli -q /home/username/public_html/cron/cron.php >/dev/null

お役に立てば幸いです。


3

これは正常に機能し、電子メールも送信します。

/ usr / bin / php /home/xxYourUserNamexx/public_html/xxYourFolderxx/xxcronfile.php

次の2つのコマンドも正常に機能しますが、電子メールは送信しません。

/ usr / bin / php -f / home /上記と同じ

php -f / home /上記と同じ




0

ドメイン固有のマルチPHP cronジョブの場合は、次のようにします。

/usr/local/bin/ea-php56 /home/username/domain_path/path/to/cron/script

上記の例では、「ea-php56」を、使用するドメインに割り当てられたPHPバージョンに置き換えます。

これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.