Serveur PHP sur une machine locale?


161

J'essaie de créer un site PHP et je souhaite tester mes fichiers PHP sans les télécharger sur mon hôte. Essentiellement, les tester sur ma propre machine avant de les télécharger. Comment je fais ça?


1
utilisez XAMPP et installez le serveur PHP. parfois, si skype utilise les ports 80 et 443, le serveur apache ne se lancera pas. La solution complète est fournie ici feelzdroid.com/2015/12/install-php-server-local-machine.html
Naruto

Réponses:



380

PHP 5.4 et les versions ultérieures ont un serveur Web intégré de nos jours.

Vous exécutez simplement la commande depuis le terminal:

cd path/to/your/app
php -S 127.0.0.1:8000

Ensuite, dans votre navigateur, allez à http://127.0.0.1:8000et boum, votre système devrait être opérationnel. (Il doit y avoir un fichier index.php ou index.html pour que cela fonctionne.)

Vous pouvez également ajouter un simple routeur

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    require_once('resolver.php');
}
?>

Et puis exécutez la commande

php -S 127.0.0.1:8000 router.php

Références:


9
Au cas où quelqu'un se demanderait, le -S et une référence à d'autres commandes peuvent être trouvés sur le lien ci-dessous. En particulier, -S signifie «Exécuter avec un serveur Web intégré». php.net/manual/en/features.commandline.options.php
calipoop

mais qu'en est-il des bases de données dans lesquelles il devrait être stocké!
Yousef Altaf

1
@YousefAltaf l'OP ne spécifie pas la météo ou non ils voulaient qu'une base de données soit utilisée. Ils ont demandé un serveur PHP et c'est simplement un serveur PHP. Si vous souhaitez exécuter un serveur MYSQL ou un serveur PostGres, ce serait une autre question et vous pouvez configurer votre application PHP pour utiliser ledit serveur. Aussi à des fins de développement rapide, une base de données SQLITE devrait faire l'affaire.
GardenRouteGold

1
PHP intégré dans le serveur Web ne prend pas en charge la demande parallèle: The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.. Cela peut entraîner des problèmes de performances.
vikyd

1
@vikyd ce n'est pas pour un développement d'applications à part entière, c'est juste un moyen rapide de tester / déboguer les fonctionnalités ou le code IMHO.
GardenRouteGold

39

C'est un moyen simple et sûr d'exécuter votre serveur php localement:

php -S 0.0.0.0:<PORT_NUMBER>

Où PORT_NUMBER est un entier compris entre 1024 et 49151

Exemple: php -S 0.0.0.0:8000

Remarques:

  1. Si vous utilisez localhostplutôt que 0.0.0.0vous pouvez rencontrer une erreur de connexion refusée.

  2. Si vous souhaitez rendre le serveur Web accessible à n'importe quelle interface, utilisez 0.0.0.0.

  3. Si une demande d'URI ne spécifie pas de fichier, alors index.php ou index.html dans le répertoire donné sont renvoyés.

Compte tenu du fichier suivant (router.php)

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    echo "<p>Welcome to PHP</p>";
}
?>

Lance ça ...

php -S 0.0.0.0:8000 router.php

... et naviguez dans votre navigateur vers http: // localhost: 8000 / et ce qui suit s'affichera:

Welcome to PHP

Référence:

Serveur Web intégré


4
Merci pour le conseil concernant 0.0.0.0, quelle solution magique c'était - devrait être incorporé dans la réponse acceptée ou quelque chose comme ça ...
calipoop

14

J'utilise souvent la commande suivante pour faire tourner mon framework PHP Laravel:

$ php artisan serve --port=8080
or
$ php -S localhost:8080 -t public/

Dans la commande ci-dessus: - Artisan est une interface de ligne de commande incluse avec Laravel qui utilise servir pour appeler le serveur php intégré

Pour exécuter avec le serveur Web intégré.

 php -S <addr>:<port> -T

Ici,
-S: Passez à Exécuter avec le serveur Web intégré.
-T: permet de spécifier la racine du document pour le serveur Web intégré.


8

J'utilise WAMP . Un assistant d'installation facile, des tonnes de modules pour Apache et PHP préconfigurés et faciles à activer et à désactiver pour correspondre à votre configuration distante.


7

Si vous voulez une pile de développement local polyvalente pour n'importe quel système d'exploitation où vous pouvez choisir parmi différentes versions de PHP, MySQL et de serveur Web et que vous n'avez pas peur d'utiliser Docker, vous pouvez opter pour la devilbox .

La devilbox est une pile PHP dockerisée moderne et hautement personnalisable prenant en charge LAMP et MEAN complets et fonctionnant sur toutes les principales plates-formes. L'objectif principal est de basculer et de combiner facilement toutes les versions nécessaires au développement local. Il prend en charge un nombre illimité de projets pour lesquels des hôtes virtuels et des enregistrements DNS sont créés automatiquement. Les e-mails fourre-tout et les outils de développement populaires seront également à votre service. La configuration n'est pas nécessaire, car tout est pré-configuré avec un hébergement virtuel de masse.

Le mettre en place et le faire fonctionner est assez simple:

# Get the devilbox
$ git clone https://github.com/cytopia/devilbox
$ cd devilbox

# Create docker-compose environment file
$ cp env-example .env

# Edit your configuration
$ vim .env

# Start all containers
$ docker-compose up

devilbox

Liens:





1

Utilisez Apache Friends XAMPP . Il mettra en place le serveur HTTP Apache, PHP 5 et MySQL 5 (pour autant que je sache, il y en a probablement plus). Vous n'avez pas besoin de savoir comment configurer apache (ou l'un des modules) pour l'utiliser.

Vous aurez un répertoire htdocs qu'Apache servira (accessible par http: // localhost / ) et vous devriez pouvoir y mettre vos fichiers PHP. Avec mon installation, c'est dans C: \ xampp \ htdocs.


1

Si vous avez une machine locale avec le bon logiciel: serveur Web avec prise en charge de PHP, il n'y a aucune raison pour que vous ne puissiez pas faire ce que vous décrivez.

Je le fais en ce moment avec XAMPP sur une machine Windows XP, et (à la maison) avec Kubuntu et une pile LAMP.



1

AppServ est un petit programme sous Windows à exécuter:

  • Apache
  • PHP
  • MySQL
  • phpMyAdmin

Il vous donnera également un bouton de démarrage et d'arrêt pour Apache. Ce que je trouve très utile.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.