Impossible d'ouvrir un fichier lorsque le php est lancé depuis cron

Signaler
Messages postés
13
Date d'inscription
samedi 15 mars 2003
Statut
Membre
Dernière intervention
29 août 2011
-
Messages postés
13
Date d'inscription
samedi 15 mars 2003
Statut
Membre
Dernière intervention
29 août 2011
-
Bonjour,

J'ai un script php que je lance chaque jour grâce à cron. Cela fonctionne très bien.

Dans ce php, je fais un test :

if ( file_exists( $fileName)){...}

qui renvoie systématiquement que le fichier n'existe pas, alors qu'il existe dans les faits.

Lorsque je lance ce php depuis mon navigateur (via le net), alors tout d'un coup le fichier existe !

J'ai passé le safemode à false et rebooter le serveur. Pas de changement.

Une idée ?

Christian

3 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Tu dis d'abord que "cela fonctionne très bien" et ensuite que le script "renvoie systématiquement que le fichier n'existe pas, alors qu'il existe dans les faits"... Je décèle comme une incohérence ;)

Bref.

Quelle ligne utilises-tu dans ta crontab pour exécuter ton script ?
Rediriges-tu la sortie d'erreur vers un fichier ? Si oui, que dit le log ? (encore faut-il générer des erreurs héhé)
Est-ce que tu spécifie bien le chemin complet de PHP ? En général, cron n'exécute pas les scripts avec l'environnement de l'utilisateur et il est alors nécessaire de spécifier le chemin complet du script : /usr/bin/php au lieu de php tout seul. Idem pour tout autre programme exécuté depuis cron.

Si ça se trouve c'est pas ça, mais comme j'ai rencontré ce problème récemment (avec un peu tout, même find ne fonctionne pas si je ne spécifie pas /usr/bin/find

Pis si c'est pas ça, on saura qu'il faut chercher ailleurs ^^

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
13
Date d'inscription
samedi 15 mars 2003
Statut
Membre
Dernière intervention
29 août 2011

Merci de ta réponse.

Cela fonctionne très bien veut dire : le script php est lancé et s'exécute. Compte-tenu que je ne connais pas ce langage, je trouve déjà que c'est une réussite (pour moi).

Rediriges-tu la sortie d'erreur vers un fichier ?
Non : je ne savais même pas que c'était possible. Je veux bien le faire... Pour l'instant je m'envoie un message par mail (ne rigole pas, merci).

J'ai fait des test sur les chemins : je constate que le chemin par défaut n'est pas le même lorsque je lance depuis le web et lorsque je lance depuis cron. J'ai donc travaillé mes chemins de près pour obtenir les mêmes. Je passe dans le dur :

/var/www/vhosts/groobax.com/httpdocs/php/ et le nom du fichier

Lorsque je fais cela, ça marche bien depuis le web, mais rien du tout depuis cron (comme si le script plantait en cours de route)

Christian
Messages postés
13
Date d'inscription
samedi 15 mars 2003
Statut
Membre
Dernière intervention
29 août 2011

Finalement j'ai réussi à faire fonctionner le bazar. Je pense que c'était une question de chemin, mais je ne suis pas vraiment convaincu.

En tous cas merci beaucoup de ton aide et excellente journée.

Christian