Servidor PHP en máquina local?

161

Estoy tratando de construir un sitio PHP y quiero probar mis archivos PHP sin subirlos a mi host. Básicamente probándolos en mi propia máquina antes de subirlos. ¿Cómo puedo hacer eso?

Kozy
fuente
1
use XAMPP e instale el servidor PHP. a veces, si Skype utiliza los puertos 80 y 443, el servidor Apache no se iniciará. La solución completa se proporciona aquí feelzdroid.com/2015/12/install-php-server-local-machine.html
Naruto

Respuestas:

380

PHP 5.4 y versiones posteriores tienen un servidor web incorporado en estos días.

Simplemente ejecuta el comando desde la terminal:

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

Luego, en su navegador, vaya http://127.0.0.1:8000y aumente, su sistema debería estar en funcionamiento. (Debe haber un archivo index.php o index.html para que esto funcione).

También puede agregar un enrutador simple

<?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');
}
?>

Y luego ejecuta el comando

php -S 127.0.0.1:8000 router.php

Referencias

JardínRutaOro
fuente
9
En caso de que alguien se lo pregunte, el -S y una referencia a otros comandos se pueden encontrar en el siguiente enlace. En particular, -S significa "Ejecutar con el servidor web incorporado". php.net/manual/en/features.commandline.options.php
calipoop
¡Pero qué pasa con las bases de datos en las que debería tener lugar para ser almacenado!
Yousef Altaf
1
@YousefAltaf el OP no especifica el clima o no querían que se utilizara una base de datos. Pidieron un servidor PHP y este simplemente es un servidor PHP. Si desea ejecutar un servidor MYSQL o un servidor PostGres, esa sería otra pregunta y puede configurar su aplicación PHP para usar dicho servidor. También para fines de desarrollo rápido, una base de datos SQLITE debería hacer.
GardenRouteGold
1
PHP incorporada en el servidor web no admite la petición simultánea: The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.. Esto puede causar algún problema de rendimiento.
vikyd
1
@vikyd esto no es para un desarrollo de aplicaciones completo, es solo una forma rápida de probar / depurar características o codificar en mi humilde opinión.
GardenRouteGold
39

Esta es una forma simple y segura de ejecutar su servidor php localmente:

php -S 0.0.0.0:<PORT_NUMBER>

Donde PORT_NUMBER es un entero de 1024 a 49151

Ejemplo: php -S 0.0.0.0:8000

Notas:

  1. Si utiliza en localhostlugar de 0.0.0.0puede golpear una conexión rechazó el error.

  2. Si desea que el servidor web sea accesible para cualquier interfaz, use 0.0.0.0.

  3. Si una solicitud de URI no especifica un archivo, se devuelve index.php o index.html en el directorio dado.

Dado el siguiente archivo (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>";
}
?>

Ejecuta esto ...

php -S 0.0.0.0:8000 router.php

... y navegue en su navegador a http: // localhost: 8000 / y se mostrará lo siguiente:

Welcome to PHP

Referencia:

Servidor web incorporado

l3x
fuente
44
Gracias por la punta con respecto 0.0.0.0, lo que es una solución mágica que era - debe ser incorporado en la respuesta aceptada o algo ...
calipoop
14

A menudo uso el siguiente comando para girar mi marco PHP Laravel:

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

En el comando anterior: - Artisan es una interfaz de línea de comandos incluida con Laravel que utiliza serve para llamar al servidor php incorporado

Para ejecutar con el servidor web incorporado.

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

Aquí,
-S: cambia a Ejecutar con el servidor web incorporado.
-T: Cambie para especificar la raíz del documento para el servidor web incorporado.

Amitesh Bharti
fuente
8

Yo uso WAMP . Un asistente de instalación fácil, toneladas de módulos para Apache y PHP preconfigurados y fáciles de encender y apagar para que coincida con su configuración remota.

Chris Sobolewski
fuente
7

Si desea una pila de desarrollo local multipropósito para cualquier sistema operativo donde pueda elegir entre diferentes versiones de PHP, MySQL y servidor web y tampoco tenga miedo de usar Docker, puede optar por el devilbox .

El devilbox es una pila PHP dockerizada moderna y altamente personalizable que admite LAMP y MEAN completos y se ejecuta en todas las plataformas principales. El objetivo principal es cambiar y combinar fácilmente cualquier versión requerida para el desarrollo local. Admite una cantidad ilimitada de proyectos para los que se crean automáticamente vhosts y registros DNS. El correo electrónico general y las herramientas de desarrollo populares también estarán a su servicio. La configuración no es necesaria, ya que todo está preconfigurado con alojamiento virtual masivo.

Ponerlo en marcha es bastante sencillo:

# 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

Enlaces:

citopia
fuente
5

Instalar XAMPP . Si está ejecutando MS Windows, WAMP también es una opción.

outis
fuente
4

MAMP si estás en un MAC MAMP

Joey Blake
fuente
1

Utilice Apache Friends XAMPP . Configurará el servidor HTTP Apache, PHP 5 y MySQL 5 (que yo sepa, probablemente haya algo más que eso). No necesita saber cómo configurar apache (o ninguno de los módulos) para usarlo.

Tendrá un directorio htdocs que Apache servirá (accesible por http: // localhost / ) y debería poder colocar sus archivos PHP allí. Con mi instalación, está en C: \ xampp \ htdocs.

Carson Myers
fuente
1

Si tiene una máquina local con el software adecuado: servidor web con soporte para PHP, no hay razón para que no pueda hacer lo que describe.

Lo estoy haciendo en este momento con XAMPP en una máquina con Windows XP y (en casa) con Kubuntu y una pila LAMP.

pavium
fuente
1

AppServ es un pequeño programa en Windows para ejecutar:

  • apache
  • PHP
  • MySQL
  • phpMyAdmin

También le dará un botón de inicio y parada para Apache. Lo cual me parece muy útil.

M. Sundstrom
fuente