To develop / deploy websites in 3 stages, i.e. ( 1 ) locally, ( 2 ) with an access controlled dedicated beta / test website in the www and ( 3 ) the production site, you can have ( 1 ) & ( 2 ) using the same domain name - port free - as follows:
- look up the IP address of the beta.web.site
and edit the hosts file to reflect:
- <IP> beta.web.site
- 127.0.0.1 beta.web.site
Start the built-in web server to work locally with:
- sudo php -S beta.web.site:80
and just hit http://beta.web.site as usual. Switching back and forth between ( 1 ) and ( 2 ) is as easy as telling the php engine not to fake a server any more :) Nice!
Happy PHP'ing.
Servidor web embebido
Desde PHP 5.4.0, la CLI SAPI provee un servidor web embebido.
Este servidor web está diseñado solamente para propósitos de desarrollo, y no debería ser utilizado en ambientes en producción.
Las peticiones de URI se sirven desde el actual directorio de trabajo donde PHP se inició, a menos que la opción -t sea utilizada para especificar una raíz de documentos explícita.
Si una petición de URI no especifica un fichero, entonces index.php o index.html se devuelven en el directorio proporcionado. Si ninguno de los ficheros existen, entonces se devuelve una respuesta con código 404.
Si un fichero PHP proporcionado en la línea de comandos cuando el servidor web es
iniciado este es tratado como un script "enrutador" por el servidor web.
El script es ejecutado al inicio de cada petición HTTP. Si este
script devuelve FALSE, entonces el recurso requerido es devuelto
tal cual está. De otra manera la salida del script es devuelta al navegador.
Ejemplo #1 Iniciando el servidor web
$ cd ~/public_html $ php -S localhost:8000
La terminal mostrará:
PHP 5.4.0 Servidor de desarrollo iniciado en Jueves Julio 21 10:43:28 2011 Escuchando en localhost:8000 La raíz de documentos es /home/usuario/html_público Presione Ctrl-C para salir
Después de una petición de una URI para http://localhost:8000/ y http://localhost:8000/mi_script.html la terminal mostrará algo similar a:
PHP 5.4.0 Servidor de desarrollo iniciado en Jueves Julio 21 10:43:28 2011 Escuchando en localhost:8000 La raíz de documentos es /home/usuario/html_público Presione Ctrl-C para salir. [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Petición leída [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Petición leída [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Petición leída [Thu Jul 21 10:48:52 2011] ::1:39148 GET /mi_script.html - Petición leída [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Petición leída
Ejemplo #2 Iniciando con una raíz de documentos específica
$ cd ~/html_público $ php -S localhost:8000 -t foo/
La terminal mostrará:
PHP 5.4.0 Servidor de desarrollo iniciado en Jueves Julio 21 10:50:26 2011 Escuchando en localhost:8000 La raíz de documentos es /home/usuario/html_público/foo Presione Ctrl-C para salir
Ejemplo #3 Utilizando un Script enrutador
Las peticiones a las imágenes se mostrarán, pero las peticiones a ficheros HTML mostrarán "Bienvenido a PHP"
<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
return false; // servir la petición tal cual es.
else {
echo "<p>Bienvenido a PHP</p>";
}
?>
$ php -S localhost:8000 router.php
Después de varias peticiones de URI la terminal mostrará algo similar a:
PHP 5.4.0 Servidor de desarrollo iniciado en Jueves Julio 21 10:53:19 2011 Escuchando en localhost:8000 La raíz de documentos es /home/usuario/html_público Presione Ctrl-C para salir. [Thu Jul 21 10:53:45 2011] ::1:55801 GET /mi_logo.jpg - Petición leída [Thu Jul 21 10:53:52 2011] ::1:55803 GET /abc.html - Petición leída [Thu Jul 21 10:53:52 2011] ::1:55804 GET /favicon.ico - Petición leída
