Maison  >  Article  >  développement back-end  >  Que dois-je faire si crontab n’exécute pas php ?

Que dois-je faire si crontab n’exécute pas php ?

藏色散人
藏色散人original
2020-07-27 10:59:292744parcourir

Solution pour que crontab n'exécute pas php : 1. Écrivez le journal dans le programme php ; 2. Dans crontab, affichez les résultats de l'exécution dans un fichier ; 3. Utilisez crontab pour exécuter php ; le code.

Que dois-je faire si crontab n’exécute pas php ?

Recommandé : "Tutoriel PHP"

Solution au problème selon lequel crontab ne peut pas exécuter php

Lorsque vous utilisez crontab pour exécuter des programmes PHP, chacun a sa propre façon de déboguer. J'ai aussi une méthode. Voyons comment j'ai résolu le problème selon lequel crontab ne peut pas exécuter de programmes PHP.

1. Le fichier php a-t-il une autorisation d'exécution ?

Le code est le suivant :

[root@linux cron]# ls -al |grep del
 -rwxr-xr-x  1 zwh  ftpgroup  494 10-20 16:42 del_redis.php

S'il n'y a pas de X, cela signifie qu'il n'y a pas d'autorisation d'exécution, et bien sûr, il ne peut pas être exécuté. Si vous ne savez pas si le groupe auquel l'utilisateur auquel vous vous connectez dispose d'autorisations, ajoutez simplement des autorisations à tous les groupes. La méthode est la suivante :

Le code est le suivant :

[root@linux cron]# chmod +x ./del_redis.php

2. Si vous avez l'autorisation d'exécution, mais qu'il ne peut toujours pas être exécuté

La solution est la suivante :

1. En php Il faut aussi écrire des logs dans le programme (par exemple : la fonction error_log()), car crontab est exécuté régulièrement S'il n'y a pas de log, comment connaître les résultats. de l’exécution du programme. De cette façon, nous pouvons voir l'état d'exécution de crontab via le journal.

2. Vous pouvez également sortir directement les résultats de l'exécution dans un fichier dans crontab. Vérifiez ensuite l'état d'exécution dans ce fichier. Par exemple :

Le code est le suivant :

*/10 * * * * /usr/local/php/bin/php /var/www/cron/del_redis.php >> /home/zhangy/cron.txt

3. Utiliser crontab pour exécuter php n'utilise pas Apache ou nginx, donc les variables telles que $_SERVER et $_ENV ne peuvent pas du tout être utilisées. . Vérifiez donc s'il existe de telles variables dans le code php et supprimez-les si c'est le cas.

4. Le problème du chemin relatif de php

En raison d'une mauvaise réflexion, ce problème est également le plus facile à ignorer.

Le code est le suivant :

include_once'./mysql.php';

Lorsqu'un chemin relatif est utilisé dans le code php, vous ne pouvez entrer que dans ce répertoire pour exécuter /usr/local/php/bin/php /var /www/cron/level_rank.php peut prendre effet. J'ai rencontré ce problème au moins deux fois, mais je ne m'en souviens toujours pas lorsque je le rencontrerai à nouveau.

La solution est la suivante :

Le code est le suivant :

*/10 * * * * cd /var/www/cron && /usr/local/php/bin/php /var/www/cron/level_rank.php

ou utilisez le chemin absolu dans le code php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn