Apache + PHP + MySql + PhpMyAdmin como módulo de Apache
Apache + PHP + MySql + PhpMyAdmin como módulo de Apache
Éste es un breve manual para una instalación rápida de PHP como módulo de Apache. Recuerda que el PHP también puede instalarse como CGI aunque no es el tipo de instalación que trataremos en este manual.
2.3 – Configuración del archivo httpd.conf de Apache
2.3.1 – Caso A: httpd.conf para Apache 1.3.X
2.3.2 – Caso B: httpd.conf para Apache 2.0.X
2.4 – Probando nuestro servidor Apache
3 – Instalación de MySQL
4 – Instalación de phpMyAdmin
5 – Configurando los usuarios del servidor MySQL
5.1 – Creación de nuestro usuario para MySQL
5.2 – Borrado de usuarios no deseados
5.3 – Recarga de privilegios
5.4 – Configurar los script para el nuevo usuario
6 – Cómo realizar las actualizaciones a versiones superiores
6.1 – Cómo actualizar Apache
6.2 – Cómo actualizar PHP
6.3 – Cómo actualizar MySQL
6.4 – Cómo actualizar phpMyAdmin
7 – Extra: instalación de un servidor de correo SMTP
8 – Extra: Apache Manager para Apache 1.3.X
9 – Notas finales
ATENCIÓN: esta guía de instalación deja la configuración por defecto de todo el software de servidor mencionado en la misma. No se centra en el afinamiento de la configuración ni detalles sobre seguridad. El objetivo es crear un servidor en el PC para desarrollo y ayuda de los programadores, no para instalar un servidor de cara a su uso en la red. Quien use esta guía de instalación para lo segundo, corre bajo su responsabilidad, nosotros sólo podemos sugerirle que haga los ajustes de seguridad que crea convenientes. En este manual no abordaremos tal tema.
También hay disponible una nota para instalar Apache, Mysql y PHP de forma fácil utilizando paquetes preconfigurados.
1 – Instalación de Apache – Web oficial: http://www.apache.org
En primer lugar vamos a distinguir dos tipos de Apache, que se corresponderán con las versiones 1.3.X y 2.0.X de este programa. El motivo de la distinción es que se usan bastante ambas versiones dependiendo del sistema operativo y la configuración es ligeramente distinta en ambos. Por ejemplo, ambas versiones son estables en sistemas Windows XP, pero la 2.0.X puede volverse inestable bajo Windows 98. Por tanto, se explicará la forma de configuración para ambos y luego serás tú quien decidas con cual te quedas. Así, si uno te falla siempre podrás utilizar el otro, pues da lo mismo.
Deberemos descargar el Apache en su versión para windows. Para ello podemos acceder por la siguiente URL: http://httpd.apache.org/download.cgi En cualquier caso, podemos encontrar cualquier archivo necesario en la carpeta httpd/binaries/win32 del servidor que usemos para la descarga (pincharíamos en Other files y eso nos conduciría al servidor seleccionado). Lo que es importante destacar es que lo que hay que destacar son los Binarios (Binary) para Windows (Win32), no los códigos fuente.
1.1 – Caso A: Instalación de Apache 1.3.X
Si te decides por utilizar la versión 1.3.X, buscaremos la última versión de este tipo. En la fecha de actualización de este manual, la última versión estable era la 1.3.33, y el archivo que tenemos que bajar es: apache_1.3.33-win32-x86-no_src.exe También puede existir el mismo archivo pero con extensión msi, en este caso podríamos bajarlo si disponemos del Windows Installer, la ventaja es que ocupa menos.
Bien, una vez que lo tengamos, ejecutamos el instalador y vamos recorriendo las pantallas hasta que salga una donde nos piden unos datos, en cuyo caso pondremos:
Network Domain: 127.0.0.1
Server Name: 127.0.0.1
Administrator’s Email Address: nuestro e-mail, aunque no es totalmente necesario.
Run when started manually, only for me. Seleccionamos esta opción.
La IP 127.0.0.1 es la dirección IP asociada a nuestra máquina, es decir el host local o vulgarmente conocido como Localhost. Es importante decir que a la hora de probar tus scripts en modo local, da igual que pongas 127.0.0.1 o localhost. Finalmente, recordar que el Apache se instala por defecto en la carpeta:
C:Archivos de programaApache GroupApache
Bien, ahora vamos a instalar el PHP. Asegúrate ahora de tener cerrado el Apache.
1.2 – Caso B: Instalación de Apache 2.0.X
Para esta versión, en la fecha de actualizción del manual la última versión disponible era la 2.0.53, por lo que el archivo que tenemos que bajar puede ser: apache_2.0.53-win32-x86-no_ssl.exe También puede existir el mismo archivo pero con extensión msi, en este caso podríamos bajarlo si disponemos del Windows Installer, la ventaja es que ocupa menos.
Bien, una vez que lo tengamos ejecutamos el instalador y vamos recorriendo las pantallas hasta que salga una donde nos piden unos datos, en cuyo caso pondremos:
Network Domain: 127.0.0.1
Server Name: 127.0.0.1
Administrator’s Email Address: nuestro e-mail, aunque no es totalmente necesario.
For All Users, on Port 80, as a Service: seleccionamos esta opción.
La IP 127.0.0.1 es la dirección IP asociada a nuestra máquina, es decir el host local o vulgarmente conocido como Localhost. Es importante decir que a la hora de probar tus scripts en modo local, da igual que pongas 127.0.0.1 o localhost. Finalmente, recordar que el Apache se instala por defecto en la carpeta:
C:Archivos de programaApache GroupApache
Bien, ahora vamos a instalar el PHP. Asegúrate ahora de tener cerrado el Apache.
2 – Instalación de PHP – Web oficial: http://www.php.net
2.1 – Copia de archivos
Dependiendo de si estamos instalando una versión 4 de PHP o una versión 5, seguiremos una parte o la otra.
2.1.1 – Instalación de PHP4
Procedemos a descargar el PHP para Windows. El archivo está localizado en la sección Downloads, apartado Windows Binaries, y es el Zip Package (no el installer, aunque éste ocupe menos luego no nos servirá). Para la versión 4.3.10, que es la versión disponible a fecha de actualización de este manual, es: PHP 4.3.10 zip package [7,405Kb]. Según vayan saliendo nuevas versiones podrás irlas encontrando en la citada sección downloads.
Una vez descargado todo el ZIP, nos creamos una carpeta en el sitio donde queramos instalar los archivos del servidor (PHP, MySQL…), por ejemplo nos creamos una carpeta en la raíz del disco duro y que quede así: C:Servidor Ahora extraemos los archivos del ZIP de PHP dendro de esa carpeta. En este caso se crea la carpeta C:Servidorphp-4.3.10-Win32 pero como no nos gusta su nombre procedemos a renombrarla a C:ServidorPHP
Y ahora hay que coger el php4ts.dll (localizado en C:ServidorPHPphp4ts.dll) y copiarlo al directorio System (en Windows 9x) o System32 (NT,2000,XP,2003) de la carpeta del Windows. Si hay otro archivo en System o System32 lo sobreescribimos. Igualmente coger los archivos que están en la carpeta C:ServidorPHPdlls y copiarlos a la carpeta System o System32 igual que hicimos con el archivo php4ts.dll
2.1.2 – Instalación de PHP5
Procedemos a descargar el PHP para Windows. El archivo está localizado en la sección Downloads, apartado Windows Binaries, y es el Zip Package (no el installer, aunque éste ocupe menos luego no nos servirá). Para la versión 5.0.3, que es la versión disponible a fecha de actualización de este manual, es: PHP 5.0.3 zip package [7,433Kb]. Según vayan saliendo nuevas versiones podrás irlas encontrando en la citada sección downloads.
Una vez descargado todo el ZIP, nos creamos una carpeta en el sitio donde queramos instalar los archivos del servidor (PHP, MySQL…), por ejemplo nos creamos una carpeta en la raíz del disco duro y que quede así: C:Servidor Dentro de esta carpeta nos creamos otra carpeta y la llamamos PHP. Luego extraemos los archivos del ZIP dendro de esa carpeta PHP, tal que los contenidos del ZIP quedarán dentro de la ruta C:ServidorPHP
Y ahora hay que coger el todos los archivos DLL localizados en la carpeta principal C:ServidorPHP y copiarlos al directorio System (en Windows 9x) o System32 (NT,2000,XP,2003) de la carpeta del Windows (los archivos DLL contenidos en la carpeta EXT no hace falta copiarlos).
2.2 – Configuración del archivo php.ini
Igual que el paso anterior, hay pequeñas diferencias dependiendo de si estamos instalando PHP4 o PHP5, asi que elije tu caso.
2.2.1 – Instalación de PHP4
El siguiente paso es configurar el php.ini. Renombramos o copiamos el archivo C:ServidorPHPphp.ini-dist y le ponemos php.ini Ahora lo editamos con el mismo block de notas. Si lo necesitáramos (lee antes la explicación), editamos la línea register_globals = Off y la colocamos el valor: register_globals = On
¿Qué hago con register_globals? ¿ON u OFF?
Activar esta directiva nos permite asumir que las variables son globales y pueden llegar por cualquier método (POST, GET, COOKIE, SERVER, etc). Así, por ejemplo, si utilizamos una variable global de sesión o cookie se puede suplantar fácilmente mediante una variable por url, con lo cual nuestro script no es seguro. Un buen programador de PHP tendría la directiva en OFF y usaría los arrays globales ($HTTP_X_VARS) o los superglobales $_POST, $_GET, etc., que están disponibles a partir de la versión 4.1.X de PHP. ¿Y por qué? Pues por esos temas de seguridad en los script y porque debemos acostumbrarnos a no manejar variables globales ya que en un futuro el PHP tendrá la opción en OFF por defecto y no podremos cambiarla. Sin embargo, por temas de compatibilidad con script antiguos o que hagan uso de variables globales, podría interesarnos activar esta característica, pero repito que lo deseable sería tenerla en OFF y hacer uso de los arrays globales o superglobales.
A continuación vamos a indicar a PHP dónde se guardan las extensiones. Dentro del php.ini buscamos extension_dir y le ponemos la carpeta que contiene los archivos php_xxx.dll, que por defecto es la carpeta extensions dentro de PHP. IMPORTANTE: durante toda la configuración de directorios, debes utilizar esta barra "/" y no esta "", además de ponerlo entre comillas. O sea, que debe quedar así:
[quote];Directory in which the loadable extensions (modules) reside. extension_dir = "C:/Servidor/PHP/extensions/"[/quote]
Además podemos activar las extensiones que queramos o necesitemos, para lo cual buscamos Windows Extensions y para cargar las extensiones les quitamos el ; de delante. Por ejemplo, si quisiéramos cargar la extensión gd2.dll (para manejar las funciones PHP relativas a imágenes) deberíamos cambiar ;extension=php_gd2.dll por extension=php_gd2.dll
Puedes ver para qué sirve cada extensión en elManual oficial de PHP. Como nota adicional, resaltar que hay algunas extensiones que requieren de librerías extra que no vienen en el paquete completo de PHP, y para hacerlas funcionar tendremos que buscar dichas librerías. No actives todas las librerías a diestro y siniestro porque luego saldrán errores de que no se encuentra tal archivo; antes de instalar una librería, comprueba que en la carpeta de PHP tienes los archivos DLL correspondientes.
Ahora, si vamos a hacer pruebas con upload de archivos via HTTP, debemos indicar el directorio donde los archivos se almacenarán temporalmente. Para ello buscamos upload_tmp_dir y le damos el valor de una carpeta que exista. Por ejemplo, en nuestro directorio C:ServidorPHP creamos una carpeta uploads, por lo que quedará algo así:
[quote]; Temporary directory for HTTP uploaded files (will use system default if not ; specified). upload_tmp_dir = "C:/Servidor/PHP/uploads/"[/quote]
Si queremos cambiar el tamaño máximo de los archivo que pueden subirse via HTTP, buscamos upload_max_filesize y cambiamos el valor por defecto que trae, 2M (2 MB), por el que queramos. No se recomienda poner un valor alto.
[quote]; Maximum allowed size for uploaded files. upload_max_filesize = 2M[/quote]
Para trabajar con sesiones, debemos especificar un directorio donde se guarden los archivos temporales. Al igual que 2 pasos antes, buscamos session.save_path y le damos el valor de un directorio que exista (o lo creamos):
session.save_path = "C:/Servidor/PHP/sessions/"
A continuación copiamos el php.ini a la carpeta C:Windows o C:WinNT según nuestra versión de Windows.
¡Ahora vamos a decirle al Apache que tenemos el PHP!
2.2.2 – Instalación de PHP5
El siguiente paso es configurar el php.ini. Renombramos o copiamos el archivo C:ServidorPHPphp.ini-dist y le ponemos php.ini Ahora lo editamos con el mismo block de notas. Si lo necesitáramos (lee antes la explicación), editamos la línea register_globals = Off y la colocamos el valor: register_globals = On
¿Qué hago con register_globals? ¿ON u OFF?
Activar esta directiva nos permite asumir que las variables son globales y pueden llegar por cualquier método (POST, GET, COOKIE, SERVER, etc). Así, por ejemplo, si utilizamos una variable global de sesión o cookie se puede suplantar fácilmente mediante una variable por url, con lo cual nuestro script no es seguro. Un buen programador de PHP tendría la directiva en OFF y usaría los arrays globales ($HTTP_X_VARS) o los superglobales $_POST, $_GET, etc., que están disponibles a partir de la versión 4.1.X de PHP. ¿Y por qué? Pues por esos temas de seguridad en los script y porque debemos acostumbrarnos a no manejar variables globales ya que en un futuro el PHP tendrá la opción en OFF por defecto y no podremos cambiarla. Sin embargo, por temas de compatibilidad con script antiguos o que hagan uso de variables globales, podría interesarnos activar esta característica, pero repito que lo deseable sería tenerla en OFF y hacer uso de los arrays globales o superglobales.
A continuación vamos a indicar a PHP dónde se guardan las extensiones. Dentro del php.ini buscamos extension_dir y le ponemos la carpeta que contiene los archivos php_xxx.dll, que por defecto es la carpeta ext dentro de PHP. IMPORTANTE: durante toda la configuración de directorios, debes utilizar esta barra "/" y no esta "", además de ponerlo entre comillas. O sea, que debe quedar así:
[quote]; Directory in which the loadable extensions (modules) reside. extension_dir = "C:/Servidor/PHP/ext/"[/quote]
Además podemos activar las extensiones que queramos o necesitemos, para lo cual buscamos Windows Extensions y para cargar las extensiones les quitamos el ; de delante. Por ejemplo, si quisiéramos cargar la extensión gd2.dll (para manejar las funciones PHP relativas a imágenes) deberíamos cambiar ;extension=php_gd2.dll por extension=php_gd2.dll
Puedes ver para qué sirve cada extensión en el Manual oficial de PHP. Como nota adicional, resaltar que hay algunas extensiones que requieren de librerías extra que no vienen en el paquete completo de PHP, y para hacerlas funcionar tendremos que buscar dichas librerías. No actives todas las librerías a diestro y siniestro porque luego saldrán errores de que no se encuentra tal archivo; antes de instalar una librería, comprueba que en la carpeta de PHP tienes los archivos DLL correspondientes.
IMPORTANTE: la librería php_mysql.dll es la que permite manejar las funciones relacionadas con MySQL, y por defecto en PHP5 viene desactivada, por tanto vamos a activarla de la forma que indicamos antes: buscamos ;extension=php_mysql.dll y le quitamos el ; de delante.
Ahora, si vamos a hacer pruebas con upload de archivos via HTTP, debemos indicar el directorio donde los archivos se almacenarán temporalmente. Para ello buscamos upload_tmp_dir y le damos el valor de una carpeta que exista. Por ejemplo, en nuestro directorio C:ServidorPHP creamos una carpeta uploads, por lo que quedará algo así:
[quote]; Temporary directory for HTTP uploaded files (will use system default if not ; specified). upload_tmp_dir = "C:/Servidor/PHP/uploads/"[/quote]
Si queremos cambiar el tamaño máximo de los archivo que pueden subirse via HTTP, buscamos upload_max_filesize y cambiamos el valor por defecto que trae, 2M (2 MB), por el que queramos. No se recomienda poner un valor alto.
dijo:
; Maximum allowed size for uploaded files. upload_max_filesize = 2M
Para trabajar con sesiones, debemos especificar un directorio donde se guarden los archivos temporales. Al igual que 2 pasos antes, buscamos session.save_path y le damos el valor de un directorio que exista (o lo creamos):
session.save_path = "C:/Servidor/PHP/sessions/"
A continuación copiamos el php.ini a la carpeta C:Windows o C:WinNT según nuestra versión de Windows.
¡Ahora vamos a decirle al Apache que tenemos el PHP!
2.3 – Configuración del archivo httpd.conf de Apache
Ya que al inicio hicimos una distinción para los casos de Apache 1.3.X y para Apache 2.0.X, no vamos a ser menos ahora y distinguiremos los dos tipos. El motivo es que la gestión de los módulos es distinta en ambas versiones, por lo que la configuración no es idéntica. Asimismo cambia algo la configuración si se trata de PHP4 o PHP5, asi que tenemos 4 casos posibles combinando las dos versiones de Apache y las dos de PHP. Hay que editar el archivo httpd.conf que encontramos en la carpeta Conf dentro del directorio del Apache.
2.3.1 – Caso A: httpd.conf para Apache 1.3.X
Buscamos Dynamic Shared Object (DSO) Support que es donde se cargan los módulos. Ahí vamos a cargar el módulo de PHP para Apache, dando la dirección del archivo php4apache.dll (PHP4) o php5apache.dll (PHP5) que lo contiene. Encontramos hasta un ejemplo:
Ahora bajamos un poco por el httpd.conf y llamamos al módulo mod_php4.c en caso de que estemos instalando PHP4 o al módulo mod_php5.c si estamos instalando PHP5, de tal manera que para PHP4 quede así:
Modificamos la línea central para que si entramos en un directorio tipo http://127.0.0.1/directorio/ nos autoejecute el index predeterminado (si existe) y no nos salga un mensaje de error. Puedes usar más nombres si lo prefieres. Se ejecutarán por orden: si no encuentra el primero, pasa al segundo; si no está el segundo, pasa al tercero, y así sucesivamente hasta que si no encuentra ninguno entonces da error. En la siguiente línea, si en nuestro directorio tenemos un index.htm y un index.php, por defecto se ejecutará el index.htm ya que está antes.
Ahora le añadimos debajo estas líneas (en la primera de ellas, si estamos instalando PHP5 también podemos añadir la extensión .php5 además de las que aparecen):
La primera indica las extensiones que serán interpretadas por el Apache. Por ejemplo podemos añadir la extensión .htm o .html para que el Apache ejecute el código PHP contenido en esas páginas (es decir, el uso de código PHP no está limitado exclusivamente a archivos *.PHP). La segunda sirve para que si entras en una página loquesea.phps entonces se muestra el código PHP a color, muy útil si queremos por ejemplo mostrar el código fuente a color en una página. De tal forma que al final todo queda así:
El directorio predeterminado para guardar nuestras páginas es el htdocs del Apache:
C:Archivos de programaApache GroupApachehtdocs
Pero podemos cambiarlo fácilmente. Buscamos DocumentRoot y nos sale esto:
DocumentRoot "C:/Archivos de programa/Apache Group/Apache/htdocs"
Nosotros sustituimos la carpeta htdocs del Apache por la que queramos. Todos los archivos que vayas a probar con el Apache deberán estar localizados en esta carpeta. Por ejemplo nos creamos una carpeta WEB dentro del directorio del servidor:
DocumentRoot "C:/Servidor/WEB/"
Y ya podemos guardar el archivo httpd.conf 2.3.2 – Caso B: httpd.conf para Apache 2.0.X
Buscamos Dynamic Shared Object (DSO) Support que es donde se cargan los módulos. Ahí vamos a cargar el módulo de PHP para Apache, dando la dirección del archivo php4apache2.dll (PHP4) o php5apache2.dll (PHP5) que lo contiene. Encontramos hasta un ejemplo:
El directorio predeterminado para guardar nuestras páginas es el htdocs del Apache:
C:Archivos de programaApache GroupApachehtdocs
Pero podemos cambiarlo fácilmente. Buscamos DocumentRoot y nos sale esto:
dijo:
# # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "C:/Archivos de programa/Apache Group/Apache/htdocs"
Nosotros sustituimos la carpeta htdocs del Apache por la que queramos. Todos los archivos que vayas a probar con el Apache deberán estar localizados en esta carpeta. Por ejemplo nos creamos una carpeta WEB dentro del directorio del servidor:
DocumentRoot "C:/Servidor/WEB/"
Por lo que construiremos toda nuestra página dentro de ese directorio, que equivale al directorio raíz de nuestro host local.
Ahora buscamos el DirectoryIndex y nos sale algo como esto:
dijo:
# # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # # The index.html.var file (a type-map) is used to deliver content- # negotiated documents. The MultiViews Option can be used for the # same purpose, but it is much slower. # DirectoryIndex index.html index.html.var
Modificamos la última línea para que si entramos en un directorio tipo http://127.0.0.1/directorio/ nos autoejecute el index predeterminado (si existe) y no nos salga un mensaje de error. Puedes usar más nombres si lo prefieres. Se ejecutarán por orden: si no encuentra el primero, pasa al segundo; si no está el segundo, pasa al tercero, y así sucesivamente hasta que si no encuentra ninguno entonces da error. En la siguiente línea, si en nuestro directorio tenemos un index.htm y un index.php, por defecto se ejecutará el index.htm ya que está antes.
Ahora le añadimos debajo estas líneas (en la primera de ellas, si estamos instalando PHP5 también podemos añadir la extensión .php5 además de las que aparecen):
La primera indica las extensiones que serán interpretadas por el Apache. Por ejemplo podemos añadir la extensión .htm o .html para que el Apache ejecute el código PHP contenido en esas páginas (es decir, el uso de código PHP no está limitado exclusivamente a archivos *.PHP). La segunda sirve para que si entras en una página loquesea.phps entonces se muestra el código PHP a color, muy útil si queremos por ejemplo mostrar el código fuente a color en una página. De tal forma que al final todo queda así:
dijo:
# # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # # The index.html.var file (a type-map) is used to deliver content- # negotiated documents. The MultiViews Option can be used for the # same purpose, but it is much slower. # DirectoryIndex index.html index.htm index.php index.php3 index.php4 index.phtml index.html.var AddType application/x-httpd-php .php .php3 .php4 .phtml AddType application/x-httpd-php-source .phps
Y ya podemos guardar el archivo httpd.conf
2.4 – Probando nuestro servidor Apache
Ahora vamos a probar el Apache y PHP, para lo cual deberemos arrancar el Apache.
Para Apache 1.3.X sólo tenemos que arrancar el apache.exe de la carpeta del Apache para iniciar el servidor, con lo cual nos sale una ventanita de MS-Dos donde nos indicará que está activo (running) o no. Basta cerrar la ventanita de MS-Dos para desactivar el Apache.
Para Apache 2.0.X accederemos desde los accesos directos que se crean en el menú de inicio al acceso directo Monitor Apache Servers y aparecerá un icono al lado del reloj. Pinchando en el icono, sale un menú desde donde podremos iniciar, apagar y reiniciar el Apache. Como queremos encenderlo, si no lo hace automáticamente le daremos a Start. Si ya estaba encendido le daremos a Restart útil si cambiamos alguna configuración de PHP "al vuelo" para que al reiniciarlo nos coja los cambios que hemos hecho.
Si todo ha ido bien, podemos crear un archivo llamado por ejemplo info.php dentro de la carpeta de nuestra web cuyo contenido sea exclusivamente el siguiente:
dijo:
phpinfo(); ?>
Si accedemos mediante nuestro navegador a la dirección http://127.0.0.1/info.php o http://localhost/info.php (recuerda que 127.0.0.1 = localhost) con el Apache activo deberemos visualizar una página de información de PHP. Si no sale, algo ha fallado, revisa los pasos.
Como has podido observar, para acceder a nuestro servidor local y así poder probar nuestros script y las páginas de nuestra web, siempre accederemos con la dirección 127.0.0.1 o localhost (sin WWW) en el navegador pues esta es la dirección del host local de nuestro ordenador. En general, para visualizar o acceder a cualquier archivo (PHP, HTML, TXT, ZIP, GIF, JPG, etc.) que tengamos en nuestra carpeta de la web, lo haremos de la siguiente forma:
http://localhost/CARPETA/ARCHIVO.EXT
Donde CARPETA es la carpeta (o serie de carpetas) relativas a la raiz en que se encuentra el ARCHIVO.EXT
Por tanto resaltar que no sólo podemos hacer llamadas a script PHP, sino también a páginas HTML, descarga de archivos, imágenes, etc., tan solo poniendo la dirección correcta en el navegador. Es simplemente un servidor. De esta forma, podemos tener nuestra web funcionando en nuestro propio ordenador para construirla desde cero o bien hacer las pruebas que necesitemos sin tener que estar conectados a Internet.