J'ai configuré un cron pour exécuter l'un de mes scripts php. Mais le problème est que le script php n'est pas exécuté du tout, même partiellement.
Voici le cron que j'ai mis en place
45 23 * * * /usr/bin/php -q /var/www/myscript.php
J'ai essayé le suivant
chmod +x /var/www/myscript.php
J'ai utilisé la commande whereis php
il donne ce qui suit
php: /usr/bin/php /usr/share/man/man1/php.1.gz
Maintenant, je ne sais pas ce que je peux faire d'autre. S'il vous plaît aider.
P.S. Je peux exécuter le script manuellement et il fonctionne parfaitement.
man php
nous dit ... --no-header
-q Quiet-mode. Suppress HTTP header output (CGI only).
--file file
-f file Parse and execute file
-q
ne fait pas quoi que ce soit en mode php-cli. Comme d'autres l'ont fait remarquer, vous avez besoin de -f
.
Retournez-le avec:
chmod -x /var/www/myscript.php
whereis
vous donnera tous les emplacements. Si vous voulez seulement le binaire, utilisez which php
.$ which php
/usr/bin/php
Voir man cron
et les modifications spécifiques à Debian. Citation:
> Comme décrit ci-dessus, les fichiers sous ces répertoires doivent être soumis à certaines vérifications de sécurité, notamment: être exécutable, appartenir à root, ne pas être accessible en écriture par groupe ou autre et, si des liens symboliques, pointer vers des fichiers appartenant à root. De plus, les noms de fichier doivent être conformes aux exigences de nom de fichier des parties d'exécution: ils doivent être entièrement composés de lettres, de chiffres et ne peuvent contenir que les signes spéciaux traits de soulignement ('_') et traits d'union ('-'). Tout fichier non conforme à ces exigences ne sera pas exécuté par les parties d'exécution. Par exemple, tout fichier contenant des points sera ignoré.
Je me contente de deviner, mais le chemin où vous placez le script ne devrait pas être
45 23 * * */usr/bin/php /var/www/html/myscript.php
je suis toujours un débutant à cron :)
La bonne ligne de crontab serait:
45 23 * * * /usr/bin/php -f /var/www/myscript.php
Notez le -f
au lieu de -q
!