Bonjour,
Je m'excuse si ma demande n'est pas à la bonne place ; je n'ai pas trouvé de section dédiée aux CRON dans l'interface de l'hébergeur web. Mon problème semble assez courant, mais je n'ai pas encore trouvé de solution.
J'ai configuré un CRON sur mon hébergeur PHP mutualisé via l'interface CPanel. La commande que je suis censé utiliser pour appeler ma page `monscript.php` est la suivante (selon les exemples de scripts fournis par l'hébergeur) :
/usr/bin/php80 -f /home/sites/11/82103d299/monsite/monscript.php
La page est bien appelée ! Cool !
Note: Mon site est situé à "/home/sites/11/82103d299/" et les répertoires avant cela sont complètement inaccessibles pour moi.
Cependant, la mauvaise nouvelle est que j'ai une commande dans `monscript.php` qui ne se déroule pas comme prévu :
$lines = file('toto.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
Lorsque j'appelle directement la page, tout fonctionne très bien en prod et sur mon environnement de développement, mais cela ne marche pas du tout lorsque le CRON l'appelle ! Je pense que c'est parce que lorsque je lance le script directement, il cherche le fichier au même niveau que lui (je pourrais le remplacer par `./toto.txt`, cela ne change rien).
Cependant, lorsque le CRON l'appelle, cela ne fonctionne pas car la commande `file('toto.txt')` semble chercher au niveau du CRON lui-même, c'est-à-dire sur "/usr/bin/", et donc il ne le trouve pas.
Afin de résoudre ce problème, je suis obligé d'écrire l'URL absolue :
$lines = file('/home/sites/11/82103d299/toto.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
Cependant, ce code n'est clairement pas idéal, car il ne fonctionne plus sur mon environnement de développement et n'est pas du tout portable en cas de changement d'hébergeur ou même de répertoire.
Je désespère de trouver une commande CRON qui me permette de me positionner au niveau du script, de sorte que les appels à des chemins relatifs fonctionnent.
Si vous avez une solution, je suis preneur !
Merci d'avance !
Remarque : Actuellement, le problème est si critique qu'en solution de contournement, j'ai créé un CRON qui appelle une page nommée 'moncron.php' ayant pour seul but d'appeler `monscript.php` en utilisant cURL. Ainsi, avec cURL, les chemins relatifs fonctionnent, et mon fichier `./toto.txt` est correctement lu.
Partager