require_once

uther
Invité n'ayant pas de compte PHPfrance

27 déc. 2005, 11:40

Bonjour,


Je suis en Php 5.03 sous apache 2

J'ai un petit pb avec la fonction require_once, si je mets le chemin complet require_once ("d:/monsite/rep1/includes/mapage.php"), je n'ai pas de probléme, le fichier mapage.php est inclus dans le script.
mais je veux utiliser le format suivant require_once ("../rep1/includes/mapage.php") j'ai l'erreur 'failed to open stream: No such file or directory' "d:/monsite/rep1/includes/pagecontenantlinclude.php"

Sous le httpd.conf de appache j'ai précisé le répertoire DocumentRoot "d:/monsite".

Cela fait un petit moment que je suis bloqué , merci pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 déc. 2005, 11:55

Où se trouve le script contenant le require_once par rapport au fichier à inclure ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

uther
Invité n'ayant pas de compte PHPfrance

27 déc. 2005, 15:19

Au final j'ai la configuration suivante :

Dans httpd.conf DocumentRoot "d:/monsite"

le script qui appelle mapage.php est dans d:/monsite/rep1/php/ et j'utilise la syntaxe require_once ("../includes/mapage.php")

le script appelé est dans d:/monsite/rep1/includes/

Voilà, voilà

Eléphant du PHP | 153 Messages

29 déc. 2005, 15:38

Salut !

require, include, require_once ou include_once, sont des fonctions que je trouve MAGIQUE, parce qu'elle ne fonctionne pas selon tout ce que l'on pourrait attendre...

En fait, le require dépend de l'url de ta page, mais peut aussi dépendre de l'url de ton fichier qui va faire le require.

Je crois que le plus simple est d'expliquer par un exemple :

Soient :
/index.php
/fich1.php
/dos1/fich2.php
/dos1/fich3.php
/dos1/dos2/fich4.php

index.php fait un require sur "dos1/fich2.php".
require "dos1/fich2.php";
et fich2.php veut récupérer fich1.php, fich3.php et fich4.php.

dans ce cas, fich2.php contiendra :
require "fich1.php";
require "dos1/fich3.php";
require "fich3.php";
require "dos2/fich4.php";
require "dos1/dos2/fich4.php";
Ce qui parait tout à fait logique si l'on résonne en fonction de la page index.php qui a appelé fich2.php.

Mais ce qui est étonnant est qu'en raisonnant en fonction de fich2.php cela fonctionne aussi :
require "fich1.php"; // pas en fonction de fich2.php
require "fich3.php";
require "dos2/fich4.php";
Et ce qui est encore plus étonnant et illogique est que cela :
require "../fich1.php";

à la place de
require "fich1.php";
ne fonctionne pas... bien que l'on raisonne en fonction de fich2.php...

Bilan, si tu ne veux pas te prendre la tête, raisonne uniquement en fonction de la page que tu appelles, ou alors ne fait pas de require d'un fichier se trouvant dans un dossier parent.
http://gl2.delcedo.com/ Galaxialord 2 !

Eléphant du PHP | 353 Messages

30 déc. 2005, 10:32

Il n'y a rien de magique.

http://fr.php.net/include/