Comment tester rapidement des sites Web avec le serveur Web intégré de PHP
Besoin de démarrer rapidement un serveur web pour tester une application PHP ? L’interpréteur PHP en a un intégré ! Vous pouvez l’utiliser pour vérifier rapidement votre travail sans exécuter Apache, NGINX ou une solution de conteneurisation.
Le serveur PHP intégré a reçu relativement peu d’attention, mais il est suffisamment puissant à des fins de développement. Dans ce didacticiel, nous montrerons comment vous pouvez l’utiliser comme alternative à d’autres microserveurs comme Python’s SimpleHTTPServer ou le http-server npm package , dont aucun ne peut exécuter de scripts PHP.
Utilisation du serveur intégré
Le serveur intégré est un mécanisme pratique pour vous aider à tester des sites PHP dans des environnements qui ne disposent pas d’un serveur HTTP complet. Il est disponible en PHP 5.4 et toutes les versions ultérieures. Vous pouvez l’exécuter directement à partir de votre répertoire de travail sans configurer au préalable un hôte virtuel.
Avant d’utiliser le serveur, gardez à l’esprit qu’il est uniquement destiné au développement. La documentation PHP met explicitement en garde contre le déploiement de ce serveur dans des applications de production. Il n’est pas assez sécurisé pour être ouvert sur les réseaux publics.
Démarrage du serveur
Le serveur est démarré en passant un -S
drapeau à l’ php
exécutable :
$ php -S localhost:8080
[Fri Jun 10 16:00:00 2022] PHP 8.1.5 Development Server (http://localhost:8080) started
L’argument passé à la commande spécifie l’adresse d’écoute du serveur. Nous avons utilisé le port 8080
dans localhost
l’exemple ci-dessus. Vous pouvez maintenant accéder http://localhost:8080
à votre navigateur Web pour accéder au contenu de votre répertoire de travail. Tous les scripts PHP seront exécutés automatiquement à votre demande.
Vous pouvez servir un chemin qui se trouve en dehors de votre répertoire de travail en définissant un -t
indicateur lors du démarrage du serveur :
$ php -S localhost:8080 -t /home/$USER/public_docs
La racine du document sera maintenant /public_docs
dans votre dossier personnel.
Gardez une fenêtre de terminal ouverte pendant l’utilisation du serveur Web. Appuyez sur Ctrl+C pour arrêter le processus une fois que vous avez fini de tester votre site. PHP enregistrera chaque requête entrante dans votre fenêtre de terminal, y compris l’URI et la méthode HTTP. Toutes les erreurs PHP non détectées apparaîtront également dans les journaux.
Activer l’accès à distance
L’écoute localhost
n’autorise pas les connexions entrantes d’autres appareils sur votre réseau. Vous pouvez activer l’accès à distance en vous liant 0.0.0.0
à :
$ php -S 0.0.0.0:8080
Veuillez noter que le serveur n’est pas protégé pour une utilisation en production et ne doit pas être exposé au public. Autorisez l’accès à distance uniquement lorsque cela est absolument nécessaire, par exemple lors du test d’une fonctionnalité particulière sur un appareil mobile. Assurez-vous que le port que vous utilisez n’est pas ouvert à Internet.
Demander une correspondance de remplacement
PHP recherchera index.php
également des index.html
fichiers à la racine du document actif s’il n’y a pas de composant URI dans la requête entrante. Si aucun de ces fichiers n’existe, le serveur continuera à remonter l’arborescence des répertoires à la recherche d’un index dans l’un des documents racine parent. Cela signifie que vous pouvez par inadvertance diffuser du contenu qui se trouve en dehors du répertoire que vous spécifiez. Un état 404 Not Found sera émis lorsque le sommet de l’arborescence a été atteint mais qu’aucun fichier d’index n’a été trouvé.
Les demandes qui incluent un URI (tel que /file
) doivent correspondre exactement au fichier statique à la racine du document. Sinon, une erreur 404 sera renvoyée. PHP définit automatiquement l’en Content-Type
-tête de réponse sur le type MIME du fichier servi pour les extensions de fichier les plus courantes.
Utilisation d’un script de routeur
En option, vous pouvez configurer le serveur Web pour appeler un script à chaque requête. Cela vous permet d’utiliser le contrôleur frontal de votre application pour effectuer un routage dynamique avancé.
La fonctionnalité de routeur est activée en spécifiant le nom de fichier PHP sur la ligne de commande lors du démarrage du serveur :
$ php -S localhost:8080 router.php
PHP va maintenant utiliser router.php
pour traiter chaque requête entrante. Vous pouvez diriger les utilisateurs vers le point approprié de votre application en vérifiant l’URI de la requête :
La sortie générée par votre script de routeur deviendra la réponse renvoyée au client. L’exception est le retour de script false
: dans ce cas, PHP retournera un fichier statique qui correspond à l’URI de la requête d’origine.
Détection de serveur embarquée à partir de votre code PHP
Votre code PHP peut déterminer s’il est appelé par le serveur Web intégré en vérifiant le nom de l’interface active. La fonction php_sapi_name()
fournit cette valeur. Il sera défini lorsque cli-server
le script sera appelé par le composant serveur intégré.
Traitement de plusieurs demandes en même temps
Par défaut, le serveur s’exécute en mode synchrone à processus unique. Les demandes sont traitées individuellement et bloquent l’exécution de l’autre jusqu’à ce qu’elles soient terminées. C’est l’une des raisons pour lesquelles le serveur n’est pas adapté à une utilisation en production.
PHP 7.4 a ajouté la prise en charge de la gestion de plusieurs requêtes en même temps. Cela dépend de la fork()
disponibilité et ne fonctionne pas sous Windows. Lorsque ce mode est activé, le serveur crée un nouveau travailleur pour servir chaque demande entrante. Vous pouvez l’activer en définissant PHP_CLI_SERVER_WORKERS
la variable d’environnement sur le nombre de nœuds de calcul souhaité :
$ PHP_CLI_SERVER_WORKERS=8 php -S localhost:8080
Cette fonctionnalité est toujours marquée comme expérimentale dans PHP 8.1.
Sommaire
PHP dispose d’un serveur Web intégré, qui est un moyen pratique de tester vos applications et d’accéder rapidement au contenu du système de fichiers local sur votre réseau local. Il prend en charge l’exécution de scripts PHP, le routage complet et les fichiers statiques avec les types MIME les plus courants.
Bien que le serveur prenne désormais en charge un mode fork facultatif, il n’est pas recommandé de l’utiliser dans un environnement de production. Il est destiné à faciliter le développement et ne dispose pas des fonctionnalités de personnalisation et de sécurité dont vous aurez besoin pour les déploiements publics. Là où il excelle, c’est en tant qu’alternative légère et intégrée aux plates-formes de développement traditionnelles telles que les conteneurs WAMP , XAMPP et Docker.
Laisser un commentaire