IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Exécuter un script PHP depuis la crontab


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut Exécuter un script PHP depuis la crontab
    Bonjour,

    Je me casse la tête depuis plusieurs jours pour faire exécuter un script PHP par ma crontab.
    (Je ne connais pas grand-chose sur LINUX !!!)

    Je désire exécuter le script PHP suivant (toutes les minutes) 'test_cron_2_HV.php' que j'ai déposé à la racine de mon site (hvt85.fr) et qui se lance bien dans le navigateur.

    J'ai prévu aussi le fichier de log (à la racine de mon site) pour récupérer les erreurs, et m'aider à comprendre pourquoi le fichier php ne s'exécute pas !!!

    Voici le contenu de la ligne de ma crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    */1 * * * * php -q /www.hvt85.fr/test_cron_2_HV.php >/erreur_cron_ma.log 2>&1
    Je vous remercie de votre aide.

    Cordialement
    Maub85

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    bonjour,

    le chemin vers PHP est-il connu dans le PATH de cron ?
    des chemins vers des fichiers sont-ils en relatifs dans le script ?
    je ne suis pas sûr de */1 : l'intervalle par défaut (*) est déjà la minute.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonsoir et Merci de ta réponse.

    Voici les miennes suite à tes suggestions :

    - Je pense avoir ajouté le PATH de cron dans ma commande , après l'avoir 'trouvé par la commande cat
    - Dans mon script PHP, tout est sur la racine de mon site, alors je pense qu'il n'y a pas de problème de chemin
    - J'ai remplacé la programmation par : * * * * * /chemin/commande

    je suis surpris de ne rien trouver dans le fichier d'erreur 'erreur_cron_ma.log'

    A bientôt
    Maub85

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    - Je pense avoir ajouté le PATH de cron dans ma commande , après l'avoir 'trouvé par la commande cat
    je ne comprends pas cette phrase.

    remplace ton script par un bête script "hello world!" en php, en gardant la redirection vers le log.
    si ça marche, c'est qu'il y a un problème avec ton script !

    1/ l'utilisateur auquel "appartient" cette crontab a-t-il le droit d'écrire à la racine du système de fichier ?
    2/ ne confonds-tu pas la racine de ton site et la racine du système de fichier ?

    un script exécuté depuis un navigateur a pour référence absolue la racine du site, alors que pour un script exécuté en console, ou par cron, la référence absolue, c'est la racine du système de fichier.
    comme un chroot : à l'intérieur du chroot, la racine c'est /, alors que le chroot se trouve sous un répertoire du système de fichiers (/var/chroot/, par exemple).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Citation Envoyé par maub85 Voir le message
    Je désire exécuter le script PHP suivant (toutes les minutes) 'test_cron_2_HV.php' que j'ai déposé à la racine de mon site (hvt85.fr) et qui se lance bien dans le navigateur.
    Avant même de programmer un cron, il faudrait tester en lançant la commande manuellement (via une session SSH).
    Je crois qu'il y a plus qu'un problème:



    Suggestion: connectez-vous sur le serveur en SSH en root, vérifier l'utilisateur du service web (httpd, apache ou autre) puis taper cette commande:
    Ca vous permettra de vous logger comme si vous étiez ce user, et même s'il n'a pas de mot de passe prédéfini.
    Puis tapez la commande que vous voulez automatiser en cron, et vous verrez où ça coince. Au moins comme ça vous serez dans un bon contexte pour faire le test et troubleshooter.

    NB: l'utilisateur "webservice" n'a très probablement pas le droit d'écrire dans la racine du disque comme vous tentez de le faire pour le log. On ne peut pas écrire n'importe où du fait des permissions des utilisateurs et du système de fichier. Quelque chose comme /var/log me semble plus judicieux

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par maub85 Voir le message
    - Je pense avoir ajouté le PATH de cron dans ma commande
    Dans le cron, le PATH ne se met pas dans la commande mais dans le fichier de la crontab.
    Si ton crontab est de ce style
    Code cron : Sélectionner tout - Visualiser dans une fenêtre à part
    */1 * * * * php -q /www.hvt85.fr/test_cron_2_HV.php >/erreur_cron_ma.log 2>&1

    Il faut le mettre ainsi
    Code cron : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PATH=...
     
    */1 * * * * php -q /www.hvt85.fr/test_cron_2_HV.php >/erreur_cron_ma.log 2>&1

    Plus les autres suggestions. Demander à un user, parce que le cron est exécuté avec les droits du user qui l'a demandé, d'écrire dans / (/erreur_cron_ma.log) ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour Sve@r,

    Merci de ta collaboration à mon souci de crontab.
    Mon site est chez IONOS en mutualisé.

    J'ai très peu de compétence sous LINUX...

    Selon ta remarque j'ai donc modifié la crontab en mettant le PATH sur la ligne précédent la commande, de la façon suivante, et pour une action toutes les 5 minutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    PATH=/kunden/homepages/15/d816899213/htdocs
    */5  * * * * php -q /www.hvt85.fr/test_cron_2_HV.php >/erreur_cron_ma.log 2>&1
    Merci de tes remarques
    A bientôt
    Cordialement
    Maub85

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maub85 Voir le message
    Selon ta remarque j'ai donc modifié la crontab en mettant le PATH sur la ligne précédent la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PATH=/kunden/homepages/15/d816899213/htdocs
    Ce qui sous-entend que
    • le dossier "/kunden/homepages/15/d816899213/htdocs" existe (ça semble assez louche car généralement les dossiers des users sont dans "/home")
    • ce dossier est susceptible de contenir des commandes ou programmes utilisés par ton crontab (c'est ça le but d'un PATH, donner le chemin des commandes utilisées) or le seul programme appelé est "php" qui est plus généralement dans /usr/bin


    Citation Envoyé par maub85 Voir le message
    Merci de ta collaboration à mon souci de crontab.
    Tu devrais lire les autres remarques, surtout l'excellent post de binarygirl qui mentionne entre autre le dossier "/www.hvt85.fr/test_cron_2_HV.php" qui là aussi semble bien bien louche. Ce n'est pas impossible d'avoir un dossier de travail sous la racine mais ce n'est pas usuel. Et reste cette histoire d'écriture d'un fichier log à la racine du système, racine généralement interdite en écriture.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Je pense que /kunden/homepages/15/d816899213/ est probablement le vrai répertoire des fichiers du site web. Chez cet hébergeur du moins (allemand).

    Par contre j'aurais mis un full path par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/php /kunden/homepages/15/d816899213/htdocs/www.hvt85.fr/test_cron_2_HV.php
    Il faut bien vérifier que l'emplacement du fichier et exact, et tester la commande à la main dans un premier temps, dans le bon contexte utilisateur (voir ci-dessus).
    Si vous avez une console ssh, vous pouvez taper: et ça vous renverra le chemin complet vers cet exécutable (probablement /usr/bin/php mais à vérifier). Pour ce qui est du fichier cible, au pire des cas vous pouvez parcourir vos répertoires a coup de ls tant que vous êtes connecté en ssh + autocompletion avec la touche tab.

    Sinon faites-vous aider par la commande find... Ceci devrait localiser le fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /kunden/homepages/15/d816899213/ -type f -name "test_cron_2_HV.php"

  10. #10
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour à tous,
    et Merci à chacun de m'avoir aidé dans mon souci de crontab.
    Mon plus gros manquement était la confusion entre la racine des fichiers et la racine de mon site !!!
    et puis mes connaissances insuffisantes en LINUX, bash, vi, crontab et Cie...
    Mon souci est donc résolu par l'intervention d'un informaticien compétent.
    Merci encore.
    Cordialement
    Maub85

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter un script shell depuis php
    Par allyass dans le forum Linux
    Réponses: 5
    Dernier message: 12/12/2009, 01h14
  2. Réponses: 1
    Dernier message: 15/09/2009, 10h45
  3. [MySQL] Exécuter un script PHP depuis MySQL
    Par phicarre dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/08/2009, 23h36
  4. Exécuter un script python depuis PHP
    Par Fawn_noOb_wxPython dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2008, 13h27
  5. Réponses: 3
    Dernier message: 26/02/2007, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo