Problème include (' ') ... Liens relatifs !

Bonjour a tous

J’ai un gros souci de include dans mes pages PHP :

Pour chaques pages de mon site jai un include pour le menu :

<?php include ('_menu.php') ?>

et un autre pour une sidebar :

<?php include ('_sidebar.php') ?>

Pour les pages a la racine du site, tout fonctionne bien, mais pour les autres pages dans d’autres répertoires, ca ne marche plus du tout fatalement. J’ai deja essayé de remonter a la racine par des

<?php include ('/_sidebar.php') ?>

Cela me donne un

Warning: include(/_sidebar.php) [function.include]: failed to open stream: No such file or directory in… balbalbla

Quel est le code a mettre pour que l’include puisse aller chercher les 2 pages php a la racine? :frowning:
Edité le 01/12/2008 à 15:22

Essaye …/ (et autant qu’il y a de niveau de dossier pour atteindre la racine)

oui ca ca marche… mais il ny a vraiment pas dautre méthodes? Un retour direct a la racine serai bien plus pratique :frowning:

Il me semble qu’en mettant un “/” devant, comme tu as fait, ça te fait remonter à la racine : mais c’est peut-être un peu trop “haut” pour ton script ?

Je met des “/” pour mes images, et ca fonctionne sans problèmes… pourquoi ca ne fonctionnerai pas pour l’incude?

Tout à fait.

Et non, malheureusement.

Rhalala c’est galère…

Donc en gros, les …/…/…/ sont inévitables?
En tout cas, merci pour vous réponses :slight_smile:

Ou alors tu conserve dans une variable (voire une CONSTANTE, c’est mieux) le chemin racine de ton application et tu t’en sers dans tes appels à include/require.

define('APP_ROOTPATH', '/var/www/n/e/o/neoweiter/html/');

//....

include(APP_ROOTPATH . 'common/functions.php');

Je débute donc ce que tu viens de me dire m’est étranger, meme si ca a l’air tres intéressant :smiley:

concrètement, si jai :

                
<div id="menu">
	<?php include ('../../_menu.php'); ?>
</div>

par quoi dois-je remplacer la ligne include?

<?php

define('APP_ROOTPATH', '##chemin vers la racine de ton application##/');

//...

?>

<!-- .... -->

<div id="menu">
	<?php include (APP_ROOTPATH . '##chemin relatif vers menu.php depuis la racine de ton appliaction##/_menu.php'); ?>
</div>

Tu peux aussi te baser sur les constantes d’environnement Apache. Mais c’est plus complexe

En ASP.NET, j’utilise “~/”, ça marche peut être en php ?

merci les gars, j’essaye vos idées :stuck_out_tongue:


Kookiz33, ton idée ne fonctionne pas,

Raynor :

mon fichier _menu.php se trouve a la racine meme. Dans ton code je met donc :

## / ##

???

et a quoi servent le /… et le , ce sont des commentaires ,non?

Enlève les “#” : c’était uniquement pour t’indiquer quoi mettre, et oui “// …” et “” sont des commentaires : indiquant que tu peux faire ce que tu veux entre les deux lignes de code (ça n’a pas d’incidence)

jai ceci

[code]

<?php define('APP_ROOTPATH', '/');?> <?php include (APP_ROOTPATH . '/_menu.php'); ?>

et ca me donne un truc

Warning: include(//_menu.php) [function.include]: failed to open stream: No such file or directory in C:\Users\Neoweiter\Desktop\TEST\site\rammstein\index.php on line 30

Warning: include() [function.include]: Failed opening ‘//_menu.php’ for inclusion (include_path=’.;C:/Program Files/EasyPHP 2.0b1\php5\pear’) in C:\Users\Neoweiter\Desktop\TEST\site\rammstein\index.php on line 30

Comme tu as déjà mis un “/” à la fin de APP_ROOTPATH, rien ne sert de le mettre entre “APP_ROOTPATH” et “_menu.php” dans ton appel à include.

toujours le meme probleme =/

Warning: include(/_menu.php) [function.include]: failed to open stream: No such file or directory in C:\Users\Neoweiter\Desktop\TEST\site\rammstein\index.php on line 30

Warning: include() [function.include]: Failed opening ‘/_menu.php’ for inclusion (include_path=’.;C:/Program Files/EasyPHP 2.0b1\php5\pear’) in C:\Users\Neoweiter\Desktop\TEST\site\rammstein\index.php on line 30

Pas étonnant.
Essaye :

<?php define('APP_ROOTPATH', 'C:\\Users\\Neoweiter\\Desktop\\TEST\\site\\rammstein');?>

Je n’ai plus de Warning… mais je n’ai plu de menu du tout. Mais je crois savoir pourquoi (ce que relance un 2eme probleme de taille ^^) :

Dans mon fichier _menu.php, chaque lien a une image de fond. C’est images se trouvent dans un dossier a la racine ()

Une fois de plus, les pages hors racines n’arrivent pas a trouver ses images. Comment faire? Mettre le scr en http:\… ? :slight_smile:

Ici, tu mets /styles/menu/actualites.png. Ainsi le navigateur lira : “chercher à partir de la racine du serveur, et non pas par rapport au document courant”