PHP INITIÉ - Développer un site en local

PHP INITIÉ - Développer un site en local

Comment développer un site en local et le transférer en ligne sans rien changer avant le transfert

Dans cet article, nous allons voir comment configurer le host pour développer un site en local. Notre but est de transférer un site d'un serveur local sur un serveur distant (votre hébergeur par exemple) sans avoir à modifier la configuration du site avant le transfert.

Installer un serveur sur votre ordinateur

Le système décrit ci dessous fonctionne aussi bien avec WAMP ou EasyPHP (voir avec un serveur Apache que vous avez vous même installé).

Reprenons, l'avantage d'avoir son serveur web en local est d'avoir la main sur la configuration. Ainsi nous pouvons facilement tester le site avec une configuration restrictive, et surtout configurer le localhost pour avoir plusieurs sites sous la main. C'est ce que nous allons voir maintenant ! Commençons par régler le problème de connexion SQL :

Connexion SQL

Les paramètres d'accès au serveur de base de données sont différents entre la version locale et la version en production. Dans ce cas, pour éviter de modifier nos fichiers de configuration php avant le transfert du site par FTP, nous regardons sur quel IP nous sommes localisé.

PHP INITIÉ - Développer un site en local

C'est en comparant l'adresse IP du serveur avec l'adresse IP local 127.0.0.1 que nous définirons les bons paramètres de connections SQL au serveur. De cette manière :

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
  <?php
if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
//données pour la connexion à la base de données local
   
$db_server = 'localhost'; //adresse du serveur MySQL
   
$db_name = 'mabaselocal'; //nom de la base de données
   
$db_user_login = 'root'; //nom d'utilisateur MySQL
   
$db_user_pass = ''; //mot de passe MySQL

    //affiche toutes les erreurs et warnings PHP en local
   
error_reporting(E_ALL);
} else {
//données pour la connexion à la base de données en prod
   
$db_server = 'serveurprod'; //adresse du serveur MySQL
   
$db_name = 'mabaseprod'; //nom de la base de données
   
$db_user_login = 'userprod'; //nom d'utilisateur MySQL
   
$db_user_pass = 'passprod'; //mot de passe MySQL

    //affiche aucune erreur ou warning PHP en production
   
error_reporting(0);
}
?>

Et voilà !! Nous allons économiser du temps avec cette manière de coder ! Comme vous avez pu le remarquer, les error_reporting sont à off pour la version de production. Cela évite bien des surprises pour ceux et celles qui travaillent sur des serveurs mutualisés et ca évite à vos visiteurs de voir des avertissements ou des erreurs incompréhensibles.

Simuler un multi domaine en local - niveau initié

Que diriez-vous d'avoir des urls en local du type http://www.example.local/ au lieu de l'eternel http://localhost/example/ ?? Pas grand chose si ce n'est pour le fun. Alors pourquoi c'est faire ?

Utiliser un sous répertoire comme racine du site local peut avoir un impact sur les règles de réécriture ainsi que sur le codage du site.

Nous allons voir comment définir un nom de domaine et un virtual host pour pouvoir y accéder avec une url proche de la réalité. Ca va nous permettre de tester notre site avec une url du type http://www.example.local/ quand le nom de domaine réel est http://www.example.com/. Nous pourrons même tester les règles de redirection interdisant l'accès au site sans www. => http://www.urlrewriting.fr/scripts1-Apache.htm

Première étape : Configuration du fichier hosts

- Editer le fichier hosts (souvent localisé à cet emplacement : C:\WINDOWS\system32\drivers\etc\hosts). Notre but est d'indiquer à Windows l'adresse IP de deux domaines en local (avec et sans le www).
- Ajouter en fin de fichier hosts les 2 lignes suivantes :
.01
.02
.03
  127.0.0.1      example.local
127.0.0.1      www.example.local
Remarque: Si vous voulez, vous pouvez indiquer votre vrai nom de domaine dans le fichier hosts. Dans ce cas, il ne faut pas oublier de supprimer ces lignes du fichier hosts (ou de les commenter en mettant un # en début de ligne) pour accéder à votre site en production.

Deuxième étape - Configuration d'un virtual host

Ce paramétrage se fait au niveau du serveur Apache dans le fichier httpd.conf. Il fait le lien entre un domaine et l'emplacement des scripts PHP ou des pages html sur le PC.

- Le premier virtual host permet d'accéder à http://localhost/ avec un contenu se trouvant dans le répertoire www de WAMP. Ceci permet de garder le fonctionnement par défaut du serveur.
- Le deuxième virtual host permet d'accéder à http://example.local/ ou à http://www.example.local/ avec un contenu se trouvant dans le répertoire www/example de WAMP :
.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
  NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "C:/Program Files/wamp/www/"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Program Files/wamp/www/example/"
    ServerName example.local
    ServerAlias www.example.local
</VirtualHost>
Et voilà !! Cela vous a pris 5 minutes à configurer et vous avez maintenant un serveur local prêt à envoyer un site en ligne sans avoir à éditer un fichier au préalable !! Vous pouvez ajouter autant de sites web que vous le souhaitez dans les fichiers hosts et httpd.conf. N'oubliez pas de rebooter votre serveur après chaque intervention sur ces fichiers.