Include dans un sous dossier

Résolu
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je rencontre un sérieux problème avec mes sous dossiers.

si je met www.dossier.site.com j'obtiens une erreur 500 si je met dans mes
includes("../../page.php")
ou encore
include($_SERVER["DOCUMENT_ROOT"]."/page.php")
afin d'attacher mes pages.

Pourtant si j'accède à www.site.com/dossier tout fonctionne à merveille.
D'où peut venir le soucis svp ?

Merci de votre aide.
Cordialement

A voir également:

4 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Oui il faut bien faire la différence entre le chemin depuis le système de fichier (protocole file) et le chemin depuis le serveur web (protocole http).

Coté serveur, PHP peut accéder à tous les fichiers du serveur où il est exécuté directement via le système de fichier.
Par exemple pour les fonctions php include, require, fopen sur un fichier du serveur, etc.

Coté client, le navigateur de l'utilisateur n'as pas accès au système de fichier du serveur mais uniquement au serveur web via le protocole http.
Dans ce cas il faut alors renseigner le chemin depuis la racine de ton site.

On a donc deux constantes à utiliser selon que le chemin sera interprété par PHP (donc via le système de fichier) ou par le navigateur (donc via le serveur web). Par exemple :
<?php 
define('PATH_ROOT', '/home/lesite/www');
define('URL_ROOT', 'http://www.lesite.com');
?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" href="<?php echo URL_ROOT; ?>/css/styles.css" rel="stylesheet" />

<?php include(PATH_ROOT."/config.php"); ?>
<?php include(PATH_ROOT."/inclusion/header.php"); ?>
<?php include(PATH_ROOT."/inclusion/menu-haut.php"); ?>
<?php include(PATH_ROOT."/inclusion/footer.php"); ?>
1
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Il s'agit d'un problème de chemin relatif :
- http://www.php-astux.info/chemins-relatif-absolu.php
- https://www.alsacreations.com/astuce/lire/78-quelle-est-la-diffrence-entre-les-chemins-relatifs-et-absolus.html

Une solution classique est de définir une constante contenant le chemin absolu vers la racine de ton site, puis d'utiliser cette constante dans chaque appel de include/require.
Par exemple :
define('PATH_ROOT', '/var/www/monsite/');
// ou pour windows :
// define('PATH_ROOT', 'C:/wamp/www/monsite/'); 

include PATH_ROOT . 'page.php';


Bonne journée
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Bonjour Pitet et merci de t'occuper de mon soucis.

J'ai fais les tests mais ça ne fonctionne pas.

<?php
echo $_SERVER["DOCUMENT_ROOT"];
//Juste pour avoir le chemin absolu que j'écris en dur dans PATH_ROOT
?>

<?php define('PATH_ROOT', '/home/lesite/www'); ?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" href="<?php echo PATH_ROOT; ?>/css/styles.css" rel="stylesheet" />

<?php include(PATH_ROOT."/config.php"); ?>
<?php include(PATH_ROOT."/inclusion/header.php"); ?>
<?php include(PATH_ROOT."/inclusion/menu-haut.php"); ?>
<?php include(PATH_ROOT."/inclusion/footer.php"); ?>

Le fichier ouvert pour test est dans dossier.monsite.com

J'ai sauté quelque chose ? :s
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Je comprends mieux à présent !

Oulà tu me sauve mon vieux !
J'ai testé et ça a fonctionné... mais juste une question, si je met le //monsite.com
Le chargement de la page ne sera pas plus lourd que ../../ ?

(Merci pour ta solution tout fonctionne très bien !)
0