Aller au contenu

Sous-domaine et fichier externe


Sujets conseillés

Posté (modifié)

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:

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

Jarodd

Modifié par Jarodd
Posté (modifié)

Oups ! Excuses moi, un boulot prenant :).

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 :

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 :

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 dautres solutions mais j'avais bien aimé celle la :).

Modifié par Alonnka
Posté (modifié)

J'ai fait un alias du rép includes. Seulement en local je ne vois pas comment m'en servir :blush:

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: J'ai essayé :

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

Mais ça ne marche pas... :(

Edit : j'ai aussi essayé :

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 :)

Modifié par Jarodd
Posté

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:

<?php
print $_SERVER['DOCUMENT_ROOT'];
?>

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

Posté

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 :

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

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

Posté
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) :(

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 ?

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 :

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

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

Sans résultat non plus...

Posté
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 dApache/PHP suffit mais ton cas particulier prouve que ce nest pas toujours le cas :).

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.

Posté

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 ;) )

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

voilà,

Nico.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...