Articles avec le tag ‘localhost’

09 juil

Développer en php en local et online plus simplement

Si comme moi vous développez un site en php pas trop complexe (ou pas, c’est selon) en local et que vous faites régulièrement des mises à jour en ligne, vous avez forcément ce problème (sauf si vous vous débrouillez autrement) : sur votre site en local (http://localhost/dossier/site…) vous spécifiez un chemin absolu dans vos appels de feuilles css, vos javascripts, vos images… ? Un truc semblable à :

<script src="/site/dossier/js/fonctions.js" type="text/javascript"></script>

Ce qui est très contraignant puisqu’il faut changer le chemin sans arrêt (sauf si le chemin sur votre serveur est le même, mais c’est très rare… !) en mettant des / au lieu du chemin absolu d’avant… Bref, une catastrophe si on ne connais pas de méthode pratique pour éviter cette corvée ! Vous pourriez bien faire une simple variable PHP en y mettant le chemin absolu, ce qui réduirait considérablement la tâche, mais j’ai une astuce encore plus commode !

Il suffit de récupérer l’adresse du serveur et de la stocker dans une variable, c’est bête, mais il fallait y penser ! L’astuce est très simple : on définie la variable $server avec l’adresse du serveur, si celle-ci est égale à localhost (cas général) ou mamp (si vous avez changé le nom de votre localhost par exemple) on créer une variable valant le chemin absolu que l’on souhaite afficher en local. Sinon, le chemin absolu sera /, c’est à dire, à la racine, ce qui est généralement le cas des sites publiés online.

Un petit plus consiste à définir en même temps l’adresse des images, en reprenant le chemin du site et en y intégrant tout simplement le chemin où les images sont stockées… !

<?php
   $server = $_SERVER['HTTP_HOST'];
   $server = $server[0];
   // $server = explode(':',$_SERVER['HTTP_HOST']);
   // La ligne ci dessus contient un explode pour les utilisateurs de MAMP sous Mac, où l'adresse locale est localhost:8888 par défaut.
 
   if ($server == 'localhost' or $srv == 'mamp') {
      $path = '/site/dossier/';
   }
   else {
      $path = '/';
   }
   $pathImg = $path.'img/';
?>

Ce code est tel que je l’utilise. Bien entendu, pour qu’il convienne à votre cas de figure, il vous faudra modifier les chemins et le nom du localhost si il est différent. Ensuite, et c’est là que c’est un peu contraignant par contre, on insère les chemins définis plus haut, mais sans se soucier du chemin ! Voici quelques exemples, respectivement, une feuille de style css, un fichier javascript, une image et un lien.

<link rel="stylesheet" type="text/css" href="<?php echo $path; ?>style.css" media="screen" />
<script src="<?php echo $path; ?>" type="text/javascript"></script>
<img src="<?php echo $pathImg; ?>image.jpg" alt="" />
<a title="Ma page" href="<?php echo $path; ?>page.html">Contenu du lien</a>

A vous d’être créatif et malin pour rendre cette fonction encore plus pratique, peut-être en spécifiant une variable pour le css, le javascript etc !