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

Langage PHP Discussion :

Tâche CRON ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut Tâche CRON ne marche pas
    Bonjour,
    J'ai un fichier php que je cherche à exécuter via une tâche cron. Celle-ci ne semble pas fonctionner alors que, si je lance le fichier moi-même, ça marche.
    L'interface de Hostinger, mon hébergeur, en matière de tâche cron n'est pas très ergonomique.
    Une fois celle-ci enregistrée, on ne peut pas voir les paramètres d'exécution. Pour faire simple, j'ai programmé la tâche "une fois par jour à 6H00".
    Il y a un bouton View Output qui, je suppose permet de tester la tâche.
    Voici un extrait de mon script PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $backupdir = $_SERVER['DOCUMENT_ROOT'].'/forum/store';
     
    // la valeur donnée par dirname(__FILE__) n'est pas le répertoire courant. Il faut donc le spécifier.
    chdir($backupdir);
    Lorsque je clique sur ViewOutPut, il m'indique qu'il ne trouve pas le répertoire à l'instruction chdir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    X-Powered-By: PHP/5.5.26
     
    Content-type: text/html
     
     
     
    <br />
    <b>Warning</b>:  chdir(): No such file or directory (errno 2) in <b>/home/u654156753/export/sendgz2dropbox.php</b> on line <b>14</b><br />
    Le fait que le script marche bien quand je le lance moi-même montre que la définition de $backupdir est bonne.

    Qu'en pensez-vous ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $_SERVER['DOCUMENT_ROOT'] n'existe pas en ligne de commande.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Qu'entends-tu par là ? Puisque le script marche bien quand je le lance directement, l'instruction est bonne non ?

    J'ai vérifié la valeur de $backupdir avec un echo, et l'interprétation est bien "/home/u654156753/public_html/forum/store"

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca veut dire quoi "lancer directement" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Ca veut dire taper l'adresse de la page PHP dans la barre d'adresse du navigateur.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui c'est donc ce que je te dis : en ligne de commande $_SERVER['DOCUMENT_ROOT'] n'existe pas.
    Cette valeur est liée au serveur web.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    A mon tour de ne pas comprendre. Qu'entends-tu par "en ligne de commande" ?
    Par exemple, si ma page PHP s'appelle script.php et contient les éléments de code figurant dans mon premier post.
    Si je place ce fichier PHP à la racine de mon site (public_html).
    Je programme une tâche cron sensé exécuter le fichier /home/u654156753/public_html/script.php.
    Ca ne marche pas.
    En revanche, si je tape "http://monsite.com/script.php" dans la barre d'adresse de mon navigateur, ça marche.

  8. #8
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Oui c'est donc ce que je te dis : en ligne de commande $_SERVER['DOCUMENT_ROOT'] n'existe pas.
    Cette valeur est liée au serveur web.
    Cette phrase me semble pourtant claire:
    Si cron exécute directement le script, il ne passe pas par le serveur et la variable n'existe pas !
    Pour que cela fonctionne, il faudrait que cron ouvre un navigateur tel que lynx avec l'url du fichier comme paramètre...à étudier , ce n'est qu'une suggestion !

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il vaudrait mieux situer ton repertoire par rapport à celui du script en utilisant __DIR__

    Sinon pour faire une connexion http en ligne de commande avec Linux, il y a wgets
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Je suis sous Windows.
    J'ai essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $backupdir = $_SERVER['DOCUMENT_ROOT'].'/forum/store';
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $backupdir = '/home/u654156753/public_html/forum/store';
    Mais ça ne semble pas marcher davantage. La tâche CRON aurait dû fonctionner cette nuit à 6H.

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Si vous avez besoin de fonctionnalités avancées, telles que les journaux de défaillance distincts, Le support des cookies ou méthode post, vous pouvez utiliser https://www.easycron.com.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu es sur Windows avec Cron et un repertoire /home ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Cron ne marche pas
    Par elgharbf dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 12/05/2014, 12h04
  2. Pourquoi cette tâche CRON ne fonctionne pas ?
    Par renaud26 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 23/04/2012, 10h36
  3. Tâches cron qui ne s'exécutent pas
    Par tamiii dans le forum Ubuntu
    Réponses: 7
    Dernier message: 19/07/2009, 08h21
  4. tâche cron qui ne marche pas
    Par polace dans le forum Administration système
    Réponses: 6
    Dernier message: 13/11/2007, 10h21

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