[résolu] Cron & Include

WRInaute passionné
Bonjour,
petit soucis, la solution est certainement toute bête (quand on la connait)...

J'ai réalisé un script en PHP a executé chaque jour, j'ai mis tout ce qu'il faut dans la crontab, le "#!/usr/local/bin/php" en début de script. Le problème n'est pas là.

Quand je tape le chemin en mode console j'ai des problèmes d'inclusion de fichier, il ne me trouve pas les fichier inclu.
J'ai donc tenté de mettre un $_SERVER["DOCUMENT_ROOT"] devant chacun de mes scripts (car apparement il faisait un include depuis le repertoire de PHP) mais toujours rien.

J'ai affiché ce $_SERVER["DOCUMENT_ROOT"] et il est vide. Alors que ["PHP_SELF"] ["SCRIPT_NAME"] ["SCRIPT_FILENAME"] ["PATH_TRANSLATED"] sont bien renseigner.

Quelqu'un connaitrait le truc pour que ça fonctionne?

Merci.
 
WRInaute passionné
Salut,

J'ai cherché aussi au début :)

Quand le cron se lance automatiquement il faut travailler avec les chemins absolus en partant à la racine de la machine (et non pas du document root défini pour apache).
 
WRInaute passionné
Oui c'est ce qu'il me semblait c'est pour ça que j'ai tenté le $_SERVER["DOCUMENT_ROOT"] qui se trouve être vide.

Le truc c'est que j'ai pas envie de faire un include avec le chemin complet à chaque fois, si je change d'hébergeur ça risque de changer... Au pire en metant le document root devant chaque script inclu ça me permetait de faire ça mais sans avoir de pb si y'a des changements.

Une autre solution aurait été de mettre le chemin dans une variable dans un fichier que j'inclu en début de page; mais les include ne marche pas... :(

Personne n'a été confronté à des pb d'include avec le lancement de script php en cron?
 
WRInaute passionné
Bacteries a dit:
Une autre solution aurait été de mettre le chemin dans une variable dans un fichier que j'inclu en début de page; mais les include ne marche pas... :(

pourquoi pas, plus simplement, au début du script que tu lances par cron. Et ensuite tu pourras faire tes include.
Si tu change d'hébergeur tu devras évidemment changer la valeur de cette variable.
 
WRInaute passionné
Bah ça ne me parrait pas super propre comme méthode. Surtout si j'ai plusieurs script de cron (ce qui devrait être le cas).
 
WRInaute passionné
$_SERVER["DOCUMENT_ROOT"] ne fonctionne pas tt le temps

Et avec ce type de chemin (à la linux quoi) ?

Code:
./dossier/fichier
 
WRInaute passionné
Bah en fait voilà le haut de ma page qui merde :

Code:
#!/usr/local/bin/php
<?php
include_once("../inf_com/neo.php");
include_once("../_class/class.Cache.php");

Ca me semble correcte comme désignation de chemin, non?
 
WRInaute passionné
Executé via le serveur web Oui sûrement si les .. ne sortent pas du document root (car là le dossier devient inaccessible).

Sinon fais juste un essai avec /home/rep/site/cron/fichier.php
 
WRInaute passionné
Y'a pas de pb en web.

C'est via le cron ou ligne de commande que ça merde :
Warning: main(../inf_com/neo.php): failed to open stream: No such file or directory in /home/web/metalorgie/_crone/sorties.php on line 4

Warning: main(): Failed opening '../inf_com/neo.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/web/metalorgie/_crone/sorties.php on line 4

Warning: main(../_class/class.Cache.php): failed to open stream: No such file or directory in /home/web/metalorgie/_crone/sorties.php on line 5

Warning: main(): Failed opening '../_class/class.Cache.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/web/metalorgie/_crone/sorties.php on line 5

Fatal error: Cannot instantiate non-existent class: cache in /home/web/metalorgie/_crone/sorties.php on line 7
 
WRInaute discret
Essaye ca peut etre :
include_once(dirname(__FILE__).'/../inf_com/neo.php');

(dirname(__FILE__) te donne le chemin absolu du script appelant).
 
Discussions similaires
Haut