Version complète: sur le forum Webmaster Hub : Sous-domaine et fichier externe
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Jarodd
Bonjour,

Voici le problème que je rencontre depuis plusieurs jours et auquel je ne trouve aucune solution.

Je suis en train de mettre en place un sous-domaine sur mon site http://sd.monsite.com. Apache redirigera le visiteur vers http://www.monsite.com/sd/

J'ai un fichier global de configuration dans http://www.monsite.com/includes/config.php. J'aimerais appliquer cette config aux sous-domaines, seulement le fichier config.php est "en dehors" de la racine du sous-domaine. J'ai essayé avec des adresses absolues, mais en développant sous Windows en local, ce n'est pas facile nonono.gif

Avez-vous une solution pour que la config soit accessible dans le sous-domaine ? Merci d'avance pour votre aide !

Jarodd
Alonnka
Salut,

As-tu accès à la config du serveur web ?
Jarodd
Salut,

En local oui tongue.gif

Sur le serveur distant, je peux y avoir accès (ce n'est pas moi le responsable).
Jarodd
Et je suis censé faire quoi avec la config du serveur web ? smile.gif
Alonnka
Oups ! Excuses moi, un boulot prenant smile.gif.

Dans la config d'apache tu peux tout simplement faire un alias de ton répertoire "includes" comme étant un sous répertoire de ton sous domaine exactement comme c'est fait pour le répertoire cgi-bin.

Pour cela dans la partie qui gère ton hôte virtuel tu ajoutes :
CODE
ScriptAlias /includes/ "/ton/chemin/absolu/vers/includes/"


Sous Windows c'est pareil sauf que le chemin est à écrire d'une façon un peu barbare :
CODE
ScriptAlias /includes/ "c:/ton/chemin/absolu/vers/includes/"


De cette façon quand tu appelleras un fichier contenu dans "http://sd.monsite.com/includes/" ben le serveur ira le cherche à l'adresse absolu.

J'avais eu à utiliser cette solution pour un site abusant des sous domaines et moi ne voulant pas copier 20 fois mon répertoire "class" dans chaque répertoire des sous domaines.

Comme toujours il doit y avoir d’autres solutions mais j'avais bien aimé celle la smile.gif.
Jarodd
Ah pas bête ! Je teste ce week-end a_thumbsup_20.gif
Jarodd
J'ai fait un alias du rép includes. Seulement en local je ne vois pas comment m'en servir blush.gif

L'adresse de mon sd est http://127.0.0.1/site_dev/sd/, comment indiquer l'include ici ? C'est dans le code peut-être ? unsure.gif J'ai essayé :

CODE
require_once("/includes/config.php");


Mais ça ne marche pas... sad.gif

Edit : j'ai aussi essayé :

CODE
require_once("http://127.0.0.1/includes/config.php");


Mais là j'ai une erreur :
Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in F:\site_dev\sd\index.php on line 6

Faut-il faire une autre modification de la config Apache ?

En fait (je réflexionne tout seul) il faut oublier la gestion du sous-domaine, là ça concerne uniquement la config Apache. En local pas de sd, juste un rép normal, un niveau sous la racine smile.gif
Dan
Si tu as défini un <VirtualHost> apache pour ton domaine, tu peux essayer d'utiliser $_SERVER['DOCUMENT_ROOT'] pour trouver la racine.

Dans ce cas, require_once($_SERVER['DOCUMENT_ROOT']."/include/config.php") devrait fonctionner.

Fais un essai à la racine de ton site avec un fichier test.php qui contient:
CODE
<?php
print $_SERVER['DOCUMENT_ROOT'];
?>

lance ce fichier dans ton navigateur et dis-nous ce que cela donne.
Alonnka
Salut,

Si je comprends bien, ce qui est un sous-domaine sur le serveur de PROD n'est qu'un sous-répertoire sur ton serveur de DEV... Déjà, ça c'est pas tip top mais bon, tu dois pouvoir bricoler quelque chose.

Dans le fichier de configuration de ton serveur local il y a aussi un paragraphe qui traite des alias pour tout ton serveur.
Donc, je pense que tu peux faire :

CODE
ScriptAlias /site_dev/sd/includes/ "f:/site_dev/includes/"

Après, à ce stade je n'ai jamais testé.
Jarodd
CITATION(Dan @ samedi 19 janvier 2008 à 00:36) *
lance ce fichier dans ton navigateur et dis-nous ce que cela donne.


$_SERVER['DOCUMENT_ROOT'] affiche D:/WAMP/www, le mettre dans le require_once génère l'erreur
Warning: require_once(D:/WAMP/www/includes/config.php)
sad.gif


CITATION(Alonnka @ samedi 19 janvier 2008 à 08:39) *
Si je comprends bien, ce qui est un sous-domaine sur le serveur de PROD n'est qu'un sous-répertoire sur ton serveur de DEV...
Déjà, ça c'est pas tip top mais bon, tu dois pouvoir bricoler quelque chose.


Oui c'est ça. Pour le dév je fais appel aux adresses http://localhost/site/rep1/ et en prod l'adresse est http://rep1.site.com/. C'est une mauvaise chose de procéder ainsi ?

CITATION(Alonnka @ samedi 19 janvier 2008 à 08:39) *
Dans le fichier de configuration de ton serveur local il y a aussi un paragraphe qui traite des alias pour tout ton serveur.
Donc, je pense que tu peux faire :

CODE
ScriptAlias /site_dev/sd/includes/ "f:/site_dev/includes/"

Après, à ce stade je n'ai jamais testé.


Sans résultat non plus...
Alonnka
CITATION(Jarodd @ samedi 19 janvier 2008 à 12:54) *
Oui c'est ça. Pour le dév je fais appel aux adresses http://localhost/site/rep1/ et en prod l'adresse est http://rep1.site.com/. C'est une mauvaise chose de procéder ainsi ?

Oui, d'une façon générale il est préférable d'avoir le maximum de similarités entre ta plateforme de DEV et celle de PROD. Bien souvent la même version d’Apache/PHP suffit mais ton cas particulier prouve que ce n’est pas toujours le cas smile.gif.

Je te suggère donc de créer un sous domaine pour ton site sur ton serveur local (en utilisant un port différent par exemple) et là tu remet les lignes que je t'ai donné plus haut et ça devrait marcher.
Jarodd
Très bien je vais suivre cette piste ! Je vous tiendrai au courant, si jamais ça peut en aider qui ont le même souci biggrin.gif
Anonymus
Sinon, le plus simple est de configurer ton fichier hosts dans windows :
windows/system32/drivers/etc/hosts

Là, tu suis les exemples, et tu configures une ligne pour qu'en tapant le nom du site (ou son sous-domaine), ca tombe sur ton localhost;
Tu te retrouves alors avec la même configuration que sur ton serveur de prod, sauf que c'est ton serveur de dev.
Et pour retrouver ton serveur de prod, tu enlèves cette ligne (tu la commentes wink.gif )

Et en cas de problèmes de cache, tu fais : ipconfig /flushdns sous demarrer/executer/cmd

voilà,
Nico.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.