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?
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
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?
Rhalala c’est galère…
Donc en gros, les …/…/…/ sont inévitables?
En tout cas, merci pour vous réponses
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
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
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:\… ?
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”