7
votes

Cronjob PHP Script ne fonctionne pas

J'essaie de mettre un cronjob pour courir toutes les 20 minutes. Cela fonctionne manuellement:

root     31855     1  0 08:39 ?        00:00:00 /usr/sbin/cron


11 commentaires

Peut-être que les détails manquants de votre question sont la clé de la réponse. Au début, il est très intéressant d'être sauvé votre crontab.


Quels détails manquants? J'utilise Debian 6


Le crontab fonctionne-t-il comme le même utilisateur que lors de l'exécution manuellement de la commande?


Je ne sais pas trop sur Crontab, mais que / est très intéressant dans votre entrée. Il suffit de vérifier mon crontab et le mien ne contient pas / du tout.


@Treffynnon Oui, il a également dit que "la racine n'a pas de crontab Installing crontab"


@fabrik thats comment vous l'obtenez à courir toutes les 20 minutes par opposition à 20 minutes après l'heure.


Mon entrée de 30 minutes commence comme ceci: 30 * * * *


@fabrik M H DOM Mon Dow Commande


@fabrik Voir Unixhelp.ed.ac.uk/cgi/man-cgi ? Crontab + 5 Votre entrée doit fonctionner à 30 minutes après l'heure et non toutes les trente minutes.


@Tom essayer de faire votre crontab vraiment simple. Alors faites-le touchez () un nouveau fichier dans / tmp et voyez si cela fonctionne. Ensuite, vous pouvez travailler à partir de là et ajouter la fonctionnalité plus complexe.


@Treffynnon Oops, Sry: D


4 Réponses :


5
votes

Le démon cron est-il même en marche?


3 commentaires

Commentaire vs Réponse meta.stackexchange.com/questions/83178/answer-vs-comment


Ce n'est pas une réponse à la question. Ce serait mieux comme un commentaire sur la question.


Le Cron Unde USR / SBIN / CRON est en cours d'exécution



-1
votes

crontab ne sait rien sur chemin variable. Alors utilisez un chemin absolu sur votre PHP (/ usr / bin / php pour E.g.) / Vous pouvez exécuter la commande quel php pour trouver votre chemin PHP


1 commentaires

Non - la plupart des versions de Crond utilisent $ Chemin (Crontab est juste un fichier de données utilisé par Crond / A pour accéder au fichier Crontab) - mais nous ne savons pas ce qui était dans la variable du chemin lorsque Crond a commencé. Certainement sa bonne pratique pour utiliser un chemin explicite vers un exécutable dans le crontab



0
votes

Si tel est déjà en ligne, essayez d'utiliser Wget au lieu de PHP, avec l'URL au lieu du chemin, c'est-à-dire:

* / 20 * * * * wget http: // votre_ip / ~ your_user / chemin / make_xml. php

ou

* / 20 * * * * wget http://mysite.co.uk/pp/ Make_xml.php

Assurez-vous d'abord que l'URL fonctionne, simplement en l'ouvrant avec un navigateur

espérons que cela aide!


1 commentaires

Avez-vous essayé cela? Il y a quelque temps, j'ai eu un problème similaire et j'ai résolu cela de cette façon. Si les cronjobs travaillent, il ne ferait pas de mal de le faire essayer.



1
votes

Il a été enregistré à /tmp/crontab.0xyhei9m/crontab

Oui - c'est le fichier que vous venez de modifier - ce n'est pas le fichier Crond lit aux emplois d'incendie. Crontab Whould Alors lisez ce fichier, installez le crontab mis à jour à l'emplacement où Crond on la recherche et avertit Crond doit traiter le fichier.

Avez-vous vérifié:

  1. Crond est en cours d'exécution?
  2. Votre UID est autorisée à planifier des travaux de cron (généralement via /etc/cron.alallow / /etc/cron.deny)
  3. que le script n'est vraiment pas démarré par Cron et échoué en raison d'une erreur d'autorisations?
  4. que la version de Crond vous utilisez Support $ Path et peut trouver l'exécutable?

1 commentaires

1. Cron (Debian) est en cours d'exécution 2.No Cron.Deny & Cron.Deny existent 3.Donnez-vous de vérifier cela vraiment 4. Je l'ai fait / USR / etc / php. Cela ne devrait pas être un problème