Variable de chemins dans une include [Résolu]

Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
- - Dernière réponse : SimsFlorian
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
- 4 sept. 2009 à 22:23
Bonjour, j'ai un petit problème. J'ai créer une variable contenant l'adresse de mon site pour pouvoir inclure les fichiers css, les images, les fichiers includes. Touts marche sauf pour les includes. Quand je rentre sa :

<?php
$base =  "http://127.0.0.1/monsiteweb";
include"$base/code/code.php";


J'obtiens cette erreur :

Warning : include() [[function.include function.include]]: URL file-access is disabled in the server configuration in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\monsiteweb\includes\debut.php on line 40



Warning: include(http://127.0.0.1/monsiteweb/code/code.php) [[function.include function.include]]: failed to open stream: no suitable wrapper could be found in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\monsiteweb\includes\debut.php on line 40




Warning: include() [[function.include function.include]]: Failed opening 'http://127.0.0.1/monsiteweb/code/code.php' for inclusion (include_path ='.;C:/Program Files/EasyPHP 2.0b1\php5\pear\') in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\monsiteweb\includes\debut.php on line 40


Ou est mon erreur ? merci.
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
3
Merci
Salut,

Comme dit dans le message d'erreur il s'agit d'un "pb" de configuration du serveur. En l'occurrence allow_url_fopen et/ou allow_url_include doivent être à off, ce qui t'empêche d'inclure une url. Voir la doc sur les directives du php.ini pour plus d'infos.
2 solutions alors :
- modifier la config du serveur
- utiliser un chemin relatif ds le include

Cordialement,


Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 140 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
0
Merci
Il n'y a pas d'autres moyens de pourvoir faire sa sans modifier le php.ini ?
Commenter la réponse de SimsFlorian
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
- utiliser un chemin relatif ds le include

Ca te pose problème ? Tes includes ne sont pas sur le même serveur ?

Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
0
Merci
En faites, j'ai créer un dossier "admin", est dans fichier "debut.php" qui inclus toutes les pages utiles au site. Est donc, dans le dossier "admin" les includes ne sont pas inclus parce que comme j'ai compris sur le post précédent, c'est une erreur de configuration de apache. Mais, le fichiers CSS eux, sont bien inclus, il y a juste les includes que je ne pas les mettres sans modifier ce php.ini.

Merci, de votre aide. :)

PS : Est ce que tous les hébergeurs, ont ces configurations d'activer ? (allow_url_fopen et/ou allow_url_include)

Merci.
Commenter la réponse de SimsFlorian
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Ces configs diffèrent selon les hébergeurs et le type de service (mutualisé, dédié, ...)

Je n'ai toujours pas compris pourquoi tu n'utilises pas des include avec des chemins relatifs, style
include 'admin/mon_fichier_a_inclure.php'
;


c'est une erreur de configuration de apache

De PHP plus exactement, ... et ce n'est pas une erreur. D'ailleurs, puisque tu sembles travailler en local, rien ne t'empêche de le modifier.

Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
0
Merci
Bonjour,

En général, allow_url_fopen est autorisé, mais le allow_url_include st désactivé, pour simple raison de sécurité. Et ce serait une très mauvaise idée, tout au moins pour la sécurité de ton site, d'autoriser le url_include.

url_fopen est utile, par exemple pour récupérer du contenu externe. Mais un iclude, ce n'est pas un contenu mais carrément du code qui PHP pourra exécuter.

Dans ton cas, c'ets la hiérarchie de ton site qu'il faut revoir pour éviter de devoir faire appel à des resources (code php) externe à ton arborescence de site.
Commenter la réponse de nautilus99
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
0
Merci
Certes, je travaille en local donc, je peux y travaillé normalement mais, si je l'upload sur un hébergeur, sa ne marchera plus

Est, je ne peux pas utilisé de chemin relatif
<?php
include 'admin/mon_fichier_a_inclure.php'
?>

Tout simplement car, à la racine de mon site, j'ai un dossier "includes", qui contient les fichiers à inclures (haut_site, menu, pied de page, etc...) est donc dans le dossier "admin" le chemin ne ce fait pas.

Voici un exemple de ma "debut.php" qui est dans le dossier "includes"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/style.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/speedbarre.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/forum.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/news.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/form.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/mp.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/webcode.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/tutoriel.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/script.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/livreor.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/profil.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $base;?>/css/style_script.css" />

<?php
//Maintenant on se connecte à la base de données
include("identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);

include'functions.php';
include"$base/scode/scode.php";
include'webcode.php';

//Récupération des variables de configuration
$recup = mysql_query('SELECT * FROM forum_config');
$config = array();
while($data_recup = mysql_fetch_assoc($recup))
{
$config[$data_recup['config_nom']] = $data_recup['config_valeur']; 
}

etc...

?>


Est grâce à include, on inclus ce fichier sur toutes les pages, est donc pas besoin de retaper tout ces codes.

Est si j'arrive à modifié le fichier "debut.php" pour qu'il arrive à affiché les fichiers dans le dossier "admin", à la racine du site, plus rien ne s'affichera...

C'est donc pourquoi, j'ai utilisé cette astuce de variable pour pouvoir affiché la totalité du chemins vers le fichier dit..

Vous comprenez mieux ?
Commenter la réponse de SimsFlorian
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
0
Merci
ces problèmes signifient simplement que l'architecture de ta hiérarchie de site est à revoir si tu penses faire appel à un hébergeur, parce que, de plus, la plupart du temps le mode secure de PHP est activé et chaque site ne peut inclure que ce qui est sous sa racine.

Il faudrait que tu repenses ton architecure avec à la racine le index.php du site, et le reste dans des sous-répartoire (admin, inc, etc, lib, www)... par exemple.
Commenter la réponse de nautilus99
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
je n'ai toujours pas compris
[..]est donc dans le dossier "admin" le chemin ne ce fait pas


include '../includes/debut.php';

ne fonctionne pas ?
A moins que par "à la racine de mon site" tu entende celle de ton hébergement (et pas celle accessible au serveur)
Dans ce cas tu dois pouvoir entrer un chemin absolu (sur le serveur), du style /tonHergement/includes/debut.php


Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
0
Merci
Quand, je faisais sa :

<?php include '../includes/debut.php'; ?>


Sa affichez "debut.php" dans le dossier "admin" mais à la racine du site.

Mais, bon, je viens de trouvé comment faire ( Merci ManuelPHP.com )

J'ai fais sa :

<?php
$fichier_trouve = 'index.php';
if (file_exists($fichier_trouve)) 
{
include"code/code.php";
}
else
{
include"../code/code.php";
}
?>


En gros, si le fichier "index.php" existe, alors on donnes l'accès vers le dossier pour la racine du site sinon, alors on mets 2 points pour le dossier "admin". C'est plus simple, est pas besoin de modifier le php.ini. Trop fier de moi

Problème résolus.
Commenter la réponse de SimsFlorian