私のLAMPはuser:www-data
として動作するように設定されており、すべてのファイルとフォルダーはその権限で作成されます。
Crontabをuser @ ubuntuとしてセットアップしました。
だから私はcrontab -e
を行い、このコマンドを使用します:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
基本的に、このコマンドは指定された場所にキャッシュファイルを作成しますが(問題はありません)、そのキャッシュファイルはuser:www-data
パーミッションではなくuser:userパーミッションで作成されます。
デフォルトでuser:www-data
権限でファイルを作成するようにするにはどうすればよいですか?
ファイルが再作成されるたびに、chown
に移動できません。
ありがとう。
システムcrontab /etc/crontab
にエントリを書き込むことができます。これは、実行するユーザーを指定する追加の引数を取ります(通常はrootですが、www-dataにすることができます)。
あなたの行は次のようになります:
*/5 * * * * www-data php /var/www/public/voto_m/artisan top >/dev/null 2>&1
または、su
を使用して、ユーザーwww-dataのcrontabを編集できます。
Sudo su -c "crontab -e" www-data
-u
引数を指定してcrontabを実行し、特定のユーザーのcrontabを編集することもできます。
Sudo crontab -u www-data -e
ユーザーwww-dataとしてcrontabを実行するには、次のコマンドを使用できます。
crontab -u www-data -e
次に、たとえば15分ごとにphpファイルを実行する行を記述します。
*/15 * * * * php -f /path_to_cron/cron.php
保存すると、エディターから次のように求められます。
File Name to Write: /tmp/crontab.HMpG7V
そこに保存してください、心配ありません。 crontab -e
は、実際のcrontabではなく/ tmpにファイルを開くため、新しいcrontabでエラーをチェックし、実際のcrontabをそれらのエラーで上書きできないようにします。エラーがなければ、実際のcrontabが更新されます。 crontab -eが実際のcrontabに直接書き込んだ場合、crontab全体が吹き飛ばされる危険があります。
Cronjobが実行されていることを確認するには、cronログを確認できます。通常、/ var/log/cron.logで、または次のコマンドを実行します。
crontab -u www-data -l