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.
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!