Variable de chemins dans une include

Résolu
SimsFlorian Messages postés 11 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 30 septembre 2009 - 4 sept. 2009 à 17:36
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.

10 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
4 sept. 2009 à 18:03
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 -
3
SimsFlorian Messages postés 11 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 30 septembre 2009
4 sept. 2009 à 19:05
Il n'y a pas d'autres moyens de pourvoir faire sa sans modifier le php.ini ?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
4 sept. 2009 à 19:38
- utiliser un chemin relatif ds le include

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

Cordialement,


Kohntark -
0
SimsFlorian Messages postés 11 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 30 septembre 2009
4 sept. 2009 à 19:55
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
4 sept. 2009 à 20:13
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 -
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
4 sept. 2009 à 20:16
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.
0
SimsFlorian Messages postés 11 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 30 septembre 2009
4 sept. 2009 à 20:31
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 ?
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
4 sept. 2009 à 20:36
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.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
4 sept. 2009 à 21:06
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 -
0
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
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.
0
Rejoignez-nous