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

weabow Messages postés 13 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 29 août 2011 - 18 oct. 2009 à 07:29
weabow Messages postés 13 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 29 août 2011 - 18 oct. 2009 à 10:51
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
18 oct. 2009 à 08:29
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à ;)
weabow Messages postés 13 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 29 août 2011
18 oct. 2009 à 08:39
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
weabow Messages postés 13 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 29 août 2011
18 oct. 2009 à 10:51
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
Rejoignez-nous