Pb $DOCUMENT_ROOT sur Apache 2.0/PHP 4.3.1 à remplacer par

BatMats
Nouveau WRInaute
 
Messages: 12
Inscription: Ven Aoû 29, 2003 8:43

Pb $DOCUMENT_ROOT sur Apache 2.0/PHP 4.3.1 à remplacer par

Message le Mer Oct 15, 2003 18:10

Salut,

J'ai pas mal galèré avec RobotStats.... :?
Le message d'erreur était le suivant :
Warning: main(/robotstats/robotstats.inc.php) [function.main]: failed to create stream: No such file or directory in /var/www/html/index.htm on line 285

Warning: main() [function.main]: Failed opening '/robotstats/robotstats.inc.php' for inclusion (include_path='.:/usr/share/pear') in /var/www/html/index.htm on line 285


J'ai testé la variable $DOCUMENT_ROOT avec :
<?php
echo ($DOCUMENT_ROOT.'/robotstats/robotstats.inc.php');
?>

Et $DOCUMENT_ROOT ne renvoie rien dans mon cas, d'ailleurs "phpinfo()" n'en parle pas, il faut alors remplacer $DOCUMENT_ROOT par $_SERVER["DOCUMENT_ROOT"] dans le code inséré sur les pages HTML et dans le fichier robotstats.inc.php.

Est-ce normal doc ? Je dis des conneries ou pas ?
Ca vient d'Apache 2.0 à votre avis ou plutôt de ma version ou install PHP ?

En tout cas maintenant ça marche et c bien cool. :D (Robot de test Ok !)

Sauf le graphe... :( sic je suis passé à RoboStats et Mandrake 9.1/Apache 2.0 et j'ai même pas les graphs. je suis un peu deg. Vs z'avez une idée : LibGD installée et visible ds phpinfo() !

Sinon j'aimerais bien un peu de feedback là dessus par pure curiosité et pour savoir ce que mon serveur peut bien avoir de particulier pour fonctionner de cette manière, car je n'ai vu aucun post la dessus...
Merci et bonne continuation.


pggv
WRInaute impliqué
WRInaute impliqué
 
Messages: 294
Inscription: Mer Juin 04, 2003 21:51

Message le Mer Oct 15, 2003 18:34

Moi c'est pareil impossible de faire fonctionner le graph, et comme je n'y connait rien je m'en passe. L'important c'est de pouvoir constater le passage des robots et puis je ne désepère pas, notre grand spécialiste va bien trouver la solution pour régler ce problème.
Paul


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 15915
Inscription: Ven Avr 19, 2002 19:51

Message le Mer Oct 15, 2003 18:48

apparemment la variable $DOCUMENT_ROOT n'est plus accessible de cette façon mais via $_SERVER["DOCUMENT_ROOT"] ?

si ça se confirme, il faudra que je mette à jour l'appli. je vais me renseigner...

Olivier
Nouveau WRInaute
 
Messages: 47
Inscription: Dim Mar 02, 2003 10:42

Message le Mer Oct 15, 2003 19:01

bonjour a tous

pour info depuis php 4.2 la norme est la suivante $_SERVER["....."]

donc c'est normal

++


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 15915
Inscription: Ven Avr 19, 2002 19:51

Message le Mer Oct 15, 2003 19:04

non en fait c'est depuis la 4.1.0 semble-t-il
mais on ne peut pas être sûr que $_SERVER["DOCUMENT_ROOT"] existe sur tous les serveurs...
il faudrait trouver un système qui marche partout, quitte à devoir écrire un répertoire en dur à un seul endroit, dans le fichier de config


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Mer Oct 15, 2003 20:20

Et avec un truc dans ce style ?

Code: Tout sélectionner
<?php
if (isset($_SERVER)) {
   $servertab = $_SERVER;
}
else {
   $servertab = $HTTP_SERVER_VARS;
}
?>


En utilisant ensuite $servertab à la place.

Fred

Invité
 

Message le Mer Oct 15, 2003 20:45

Effectivement depuis la 4.1, toutes les variables php ont changé. Pour fonctionner avec n'importe quelle version de php, il faut inclure le code suivant :

Code: Tout sélectionner
<?php
if(!isset($_SERVER))
{
    $_SERVER = $HTTP_SERVER_VARS;
    $_ENV = $HTTP_ENV_VARS;
    $_COOKIE = $HTTP_COOKIE_VARS;
    $_GET = $HTTP_GET_VARS;
    $_POST = $HTTP_POST_VARS;
    $_FILES = $HTTP_POST_FILES;
    $_SESSION = $HTTP_SESSION_VARS;
   
    $_REQUEST = $_POST;
    for($i=0;$i<count($_GET);$i++)
    {
       $v=each($_GET);
       $_REQUEST[$v[key]]=$v[value];
    }
    unset($i);
    unset($v);
}
?>


... et changer toutes les variables dans son code :? .

BatMats
Nouveau WRInaute
 
Messages: 12
Inscription: Ven Aoû 29, 2003 8:43

Message le Mer Oct 15, 2003 21:46

Ca veut dire que pour que ton code soit portable tu dois inclure ce bout de code pour chaque pge php ? :?


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Mer Oct 15, 2003 21:53

BatMats a écrit:Ca veut dire que pour que ton code soit portable tu dois inclure ce bout de code pour chaque pge php ? :?


Ouaip, un ptit coup de require et le tour est joué.
N'oublions pas que cette histoire de register globals et de tableaux superglobaux ne tombe pas non plus d'un coup, ça fait un moment qu'on est prévenu et qu'on a pu modifier son code en conséquence.

Fred


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 15915
Inscription: Ven Avr 19, 2002 19:51

Message le Mer Oct 15, 2003 22:16

j'ai déjà utilisé un système de ce genre, mais pas pour DOCUMENT_ROOT
ma question est surtout comment trouver un système qui fonctionne meme si DOCUMENT_ROOT n'est pas disponible ?

Invité
 

Message le Jeu Oct 16, 2003 1:48

Attention, la variable _SERVER["DOCUMENT_ROOT"] représente la racine par défaut définie dans le httpd.conf d'Apache.
Code: Tout sélectionner
DocumentRoot "C:/Apache2/htdocs"

Dans le cas ou votre site est placé sous ce répertoire (accessible par http://localhost), la variable renverra bien "C:/Apache2/htdocs".

Or, lors de l'utilisation d'alias dans le httpd.conf,
Code: Tout sélectionner
Alias /myweb "D:/myweb"

un acces sur une page à l'URL http://localhost/myweb renverra la variable _SERVER["DOCUMENT_ROOT"] renseigné également avec "C:/Apache2/htdocs".

De plus si la définition DocumentRoot est omise dans le httpd.conf (aucun accés possible à l'URL http://localhost), la variable est remplie avec la valeur par défaut (/apache/htdocs).

Une solution pour connaitre le répertoire racine de son site serait soit de récupérer la variable _ENV["DOCUMENT_ROOT"] (si définie), soit de récupérer la variable _SERVER["SCRIPT_FILENAME"] et dans extraire le chemin (pas trés jolie mais...).

Invité
 

Message le Jeu Oct 16, 2003 1:52

Ah, un truc, afin de connaitre toutes les variables PHP, placer sur son site une page contenant le code suivant:
Code: Tout sélectionner
<?php
phpinfo();
?>

et tester... :)

BatMats
Nouveau WRInaute
 
Messages: 12
Inscription: Ven Aoû 29, 2003 8:43

Message le Jeu Oct 16, 2003 9:02

Phpinfo() ne mentionne la variable _ENV["DOCUMENT_ROOT"] nulle part chez moi !


pggv
WRInaute impliqué
WRInaute impliqué
 
Messages: 294
Inscription: Mer Juin 04, 2003 21:51

Message le Dim Oct 19, 2003 4:44

Pour le problème des graphs et robot test ce post peût vous interesser
http://www.webrankinfo.com/forums/viewtopic_5453.htm


Lectures recommandées sur ce thème :



Qui est en ligne

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