[résolu] Cron & Include


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

[résolu] Cron & Include

Message le Ven Mar 31, 2006 19:51

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.
Dernière édition par Bacteries le Dim Avr 02, 2006 19:40, édité 1 fois.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Message le Sam Avr 01, 2006 4:07

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).


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Sam Avr 01, 2006 8:51

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?

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Sam Avr 01, 2006 10:00

Bacteries a écrit: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.


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Sam Avr 01, 2006 12:43

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).


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Message le Sam Avr 01, 2006 14:28

$_SERVER["DOCUMENT_ROOT"] ne fonctionne pas tt le temps

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

Code: Tout sélectionner
./dossier/fichier


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Sam Avr 01, 2006 14:32

Bah en fait voilà le haut de ma page qui merde :

Code: Tout sélectionner
#!/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?


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Message le Sam Avr 01, 2006 15:37

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


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Sam Avr 01, 2006 15:45

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


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Message le Sam Avr 01, 2006 15:49

T'as regardé du coté des droits d'utilisateurs ?


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Sam Avr 01, 2006 17:43

Il est en 755.

gomoz
WRInaute discret
WRInaute discret
 
Messages: 230
Inscription: 29 Déc 2004

Message le Dim Avr 02, 2006 2:05

Essaye ca peut etre :
include_once(dirname(__FILE__).'/../inf_com/neo.php');

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


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Dim Avr 02, 2006 19:39

Ah yes! Niquel ça marche.

Merci beaucoup.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités