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