Ma lampe est configurée pour fonctionner en tant que user:www-data
et tous les fichiers et dossiers sont créés avec ces autorisations.
J'ai configuré pour crontab en tant qu'utilisateur @ Ubuntu.
Donc, je fais crontab -e
et utilise cette commande:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Fondamentalement, cette commande crée simplement un fichier de cache à un emplacement spécifié (aucun problème avec cela), mais ce fichier de cache est créé avec les droits utilisateur: les autorisations utilisateur et non les autorisations user:www-data
.
Comment puis-je faire en sorte qu'il crée par défaut un fichier avec les autorisations user:www-data
?
Je ne peux pas y aller et chown
chaque fois que le fichier est recréé.
Merci.
Vous pouvez écrire votre entrée dans le système crontab /etc/crontab
, qui nécessite un argument supplémentaire spécifiant que l'utilisateur doit s'exécuter en tant que (généralement root, mais pouvant être www-data).
Votre ligne deviendrait:
*/5 * * * * www-data php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Ou vous pouvez éditer la crontab de l'utilisateur www-data avec su
:
Sudo su -c "crontab -e" www-data
Vous pouvez également exécuter crontab avec l'argument -u
pour éditer une crontab pour un utilisateur spécifique:
Sudo crontab -u www-data -e
Pour exécuter une crontab en tant qu'utilisateur www-data, vous pouvez utiliser la commande suivante:
crontab -u www-data -e
Ensuite, vous écrivez une ligne, par exemple pour exécuter un fichier php toutes les 15 minutes:
*/15 * * * * php -f /path_to_cron/cron.php
Lors de la sauvegarde, l'éditeur vous demandera:
File Name to Write: /tmp/crontab.HMpG7V
Enregistrez-le là-bas, pas de soucis. crontab -e
ouvre un fichier dans/tmp au lieu de la crontab réelle afin qu'il puisse vérifier les erreurs de votre nouvelle crontab et vous empêcher de remplacer votre crontab réelle par ces erreurs. S'il n'y a pas d'erreur, votre crontab sera mise à jour. Si crontab -e venait d'écrire directement dans votre crontab, vous risqueriez de perdre tout votre crontab.
Pour vérifier que votre tâche cron est exécutée, vous pouvez consulter les journaux cron. généralement dans /var/log/cron.log ou en exécutant la commande suivante:
crontab -u www-data -l