Serveur Web Interne

Voir la vidéo

Depuis la version 5.4 PHP intègre un serveur web interne qui permet de tester simplement son site. Pour démarrer ce serveur il suffit de taper la commande :

php -S localhost:8080

L'avantage de cette commande est qu'elle permet de définir des variable de configuration à la volée. Si par exemple on souhaite activer l'affichage des erreurs on peut passer l'option directement au moment du démarrage du serveur interne

php -S localhost:8080 -ddisplay_errors=1 

On peut aussi en profiter pour activer des outils avancés comme xdebug

php -S localhost:8080 -ddisplay_errors=1 -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_autostart=1 -dxdebug.remote_port=3004

En revanche il n'est évidemment pas possible d'utiliser un système de réécriture d'URL via des htaccess par exemple (cette technique est réservée à Apache). Par contre il est possible de préciser le dossier qui servira de racine si ce n'est pas le dossier courant.

php -S localhost:8080 -t public

En revanche pour une configuration plus complexe, on peut utiliser un script qui servira alors de "router"

php -S localhost:8080 -t public server.php

Voici un exemple qui permet de rediriger toutes les requêtes vers le dossier public si le fichier n'existe pas.


$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// Si le fichier existe, on ne passe pas par le router
if ($url !== '/' && file_exists(__DIR__.'/public'.$url)) {
    return false;
}

// On modifie certaines variable pour ne pas avoir de problèmes par la suite
$_SERVER['SCRIPT_NAME'] = '/index.php';
// On inclue le fichier qui sert de point d'entré pour notre application
require_once __DIR__.'/public/index.php';
Publié
Technologies utilisées
Auteur :
Grafikart
Partager