Comment tester rapidement des sites Web avec le serveur Web intégré de PHP

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 -Sdrapeau à l’ phpexé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 8080dans localhostl’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 -tindicateur lors du démarrage du serveur :

$ php -S localhost:8080 -t /home/$USER/public_docs

La racine du document sera maintenant /public_docsdans 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 localhostn’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.htmlfichiers à 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.phppour 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-serverle 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_WORKERSla 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

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *