Este how-to es el primero de una serie en la que iré desgranando paso a paso como configuro XAMPP en Windows.
XAMPP, por si no lo sabes, es una manera fácil, rápida y limpia de instalar un servidor Apache junto con PHP y MySQL listo para servir páginas. Además XAMPP permite la instalación en un pendrive, lo que nos permite llevar fácilmente las demos de las páginas web que hagamos al cliente, sin tener que instalar nada.
Entrando en materia lo primero que hago es instalar PHP a mano. Si, realizo una instalación personalizada y a mano del PHP, ya que además de utilizarlo con el servidor Apache también utilizo PHP para scripts de línea de comando.
Sería interesante que antes de empezar elijamos qué versión de PHP vamos a instalar. En mi caso será la versión 7.1.0-VC14 de 64 bits en un Windows 10, también de 64 bits. Puedes consultar las versiones disponibles en:
http://windows.php.net/download/
En la misma página están disponibles los enlaces a las distintas versiones del runtime del Visual Studio. Antes era un poco lío, ahora cada paquete de PHP tiene en el nombre la versión del runtime a instalar:
Por supuesto hay que bajarse la versión de 32 bits si instalamos el PHP de 32 bits, y de 64 bits si hemos elegido PHP de 64 bits… que nos conocemos y seguro que más de un despistado lo pregunta (¿eh, Fernando?).
Utilizaré las siguientes herramientas:
Las tres utilidades más alguna cosa más están en un zip de poco menos de 2Mb: Utilidades
El archivo comprimido tiene la siguiente estructura:
/usr /usr/bin /usr/etc /usr/etc/php /usr/share /usr/share/mibs /var /var/log /var/tmp
Y la estructura que vamos a crear es la siguiente:
c:\usr\ c:\usr\bin c:\usr\etc c:\usr\etc\php c:\usr\lib c:\usr\share c:\usr\share\mibs c:\var c:\var\log c:\var\tmp
Así pues, hay que descomprimir el zip en la raíz del disco C y ya puestos podemos crear c:\var y los dos subdirectorios que debe contener.
Hay que modificar/añadir las siguientes variables de entorno del sistema:
No debería tener que explicar para qué sirve la variable de entorno Path, simplemente añadimos la ruta a las utilidades (c:\usr\bin), al PHP y sus extensiones (c:\usr\php; c:\usr\php\ext) y al PEAR que instalaremos más adelante (c:\usr\pear).
Una vez hemos preparado el entorno y las rutas, abrimos una línea de comandos y nos situamos en c:\usr:
cd c:\usr
En nuestra línea de comandos ejecutamos lo siguiente:
c:\usr> set path=%path%;c:\usr\bin c:\usr> wget -qN --show-progress http://windows.php.net/downloads/releases/php-7.1.0-Win32-VC14-x64.zip c:\usr> unzip php-7.1.0-Win32-VC14-x64.zip -d c:\usr\php-7.1.0 c:\usr> junction c:\usr\php c:\usr\php-7.1.0 c:\usr> copy c:\usr\php-7.1.0\php.ini-production c:\usr\php-7.1.0\php.ini
Fíjate, hemos “instalado” el PHP en c:\usr\php-7.1.0 y con junction hemos enlazado a c:\usr\php, de esta manera cuando actualicemos el PHP bastará con hacer lo siguiente:
junction -d c:\usr\php junction c:\usr\php c:\usr\php-7.1.1
Evidentemente antes de hacer dicha operación necesitaremos parar cualquier proceso que haga uso del PHP, como el XAMPP que instalaremos otro día.
En el zip de Utilidades que he enlazado antes hay un “php.ini” que debería estar en c:\usr\etc\php, esto es un truco que he descubierto hace nada cómo hacerlo en Windows. El truco consiste en que mediante una variable de entorno (PHP_INI_SCAN_DIR) se le indica al PHP que queremos que también lea todos los “.ini” que encuentre en las rutas indicadas. Así hemos copiado toda la configuración por defecto del php.ini-production en c:\usr\php\php.ini, que nos servirá como base para la configuración. En el c:\usr\etc\php\php.ini tenemos lo siguiente:
[PHP] error_reporting = E_ALL display_errors = On display_startup_errors = On log_errors = On log_errors_max_len = 0 html_errors = Off error_log = "c:\var\log\php-"PHP_VERSION"_"PHP_SAPI".log" mail.log = "c:\var\log\php-"PHP_VERSION"_"PHP_SAPI"_mail.log" include_path = "c:\usr\lib;c:\usr\pear\pear" extension_dir = "c:\usr\php-"PHP_VERSION"\ext" sys_temp_dir = "c:\var\tmp" enable_dl = On file_uploads = On upload_tmp_dir = c:\var\tmp upload_max_filesize = 2M [Date] date.timezone = Europe/Madrid
Tal y como se explica en la documentación, lo que hacemos es utilizar las constantes PHP_VERSION y PHP_SAPI para especificar la ruta donde están las extensiones y dar nombre al fichero de log.
Si no has cerrado la ventada del cmd que teníamos abierta (¿quien ha dicho que la cerrases?), puedes ejecutar lo siguiente:
c:\usr> php -v PHP 7.1.0 (cli) (built: Dec 2 2016 05:24:57) ( ZTS MSVC14 (Visual C++ 2015) x64 ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
Si todo ha ido bien, PHP nos responderá como os he indicado.
Antes, cuando hemos añadido las variables de entorno hemos creado una llamada PATHEXT es la variable de entorno que Windows utiliza para saber qué extensiones del sistema son los archivos ejecutables, esto nos permitirá ejecutar un script “ejemplo.php” llamándolo desde la línea de comandos simplemente por “ejemplo”. Para que esto funcione hay que añadir lo siguiente al registro:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.php] @="phpfile" [HKEY_CLASSES_ROOT\.php\ShellNew] "FileName"="template.php" [HKEY_CLASSES_ROOT\phpfile] @="PHP Script" [HKEY_CLASSES_ROOT\phpfile\DefaultIcon] @="c:\\usr\\share\\php_xpstyle.ico" [HKEY_CLASSES_ROOT\phpfile\shell] [HKEY_CLASSES_ROOT\phpfile\shell\open] [HKEY_CLASSES_ROOT\phpfile\shell\open\command] @="\"c:\\usr\\php\\php.exe\" \"%1\" %*"
Por comodidad basta con hacer doble click sobre c:\usr\php.reg, también sería aconsejable añadir c:\usr\phar.reg al registro.
Y ya puestos añadimos en c:\ProgramData\Microsoft\Windows\Templates\ el siguiente “template.php” (c:\usr\template.php):
<?php ?>
Si, es un script php vacío… pero ahora cuando en una carpeta de Windows accedas al menú contextual (click derecho) en Nuevo verás una nueva opción “PHP Script“, al seleccionar esa opción verás que te ofrece crear un archivo con extensión “.php” cuyo contenido será justamente el de “template.php”.
PHP_PEAR_SYSCONF_DIR y MIBDIRS son las variables de entorno que utilizarán el PEAR y la extensión SMNP respectivamente. Si bien es posible que no resulte interesante activar la extensión SMNP, es mejor tener el PHP y el entorno preparados. Lo que si que es una buena idea y casi una obligación es configurar PEAR.
PEAR es un repositorio de extensiones/clases/aplicaciones escritas en PHP. Podemos liarnos con el procedimiento de instalación, o puedes hacerlo a mi manera. En nuestra ventana de linea de comandos, que a estas alturas ya sabéis que no tenéis que cerrar, ejecutamos lo siguiente:
c:\usr> mkdir c:\usr\pear c:\usr> cd c:\usr\pear c:\usr\pear> wget -qN --show-progress https://pear.php.net/go-pear.phar c:\usr\pear> php go-pear.phar
Lo primero que nos preguntará es si la instalación es de “sitema” (común) o “local”, le decimos que es “local” y confirmamos:
Are you installing a system-wide PEAR or a local copy? (system|local) [system] : local Please confirm local copy by typing 'yes' : yes
Entonces nos muestra las rutas de instalación:
Below is a suggested file layout for your new PEAR installation. To change individual locations, type the number in front of the directory. Type 'all' to change all of them or simply press Enter to accept these locations. 1. Installation base ($prefix) : C:\usr\pear 2. Temporary directory for processing : C:\usr\pear\tmp 3. Temporary directory for downloads : C:\usr\pear\tmp 4. Binaries directory : C:\usr\pear 5. PHP code directory ($php_dir) : C:\usr\pear\pear 6. Documentation directory : C:\usr\pear\docs 7. Data directory : C:\usr\pear\data 8. User-modifiable configuration files directory : C:\usr\pear\cfg 9. Public Web Files directory : C:\usr\pear\www 10. System manual pages directory : C:\usr\pear\man 11. Tests directory : C:\usr\pear\tests 12. Name of configuration file : C:\usr\pear\pear.ini 13. Path to CLI php.exe : c:\usr\php 1-13, 'all' or Enter to continue:
Si no nos hemos perdido con los pasos y los hemos seguido bien verás que las rutas ya son correctas y sólo hay que pulsar intro para seguir:
Beginning install... Configuration written to C:\usr\pear\pear.ini... Initialized registry... Preparing to install... installing phar://C:/usr/pear/go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.4.0.tar... installing phar://C:/usr/pear/go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.4.1.tar... installing phar://C:/usr/pear/go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.10.1.tar... installing phar://C:/usr/pear/go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.1.1.tar... installing phar://C:/usr/pear/go-pear.phar/PEAR/go-pear-tarballs/XML_Util-1.3.0.tar... install ok: channel://pear.php.net/Archive_Tar-1.4.0 install ok: channel://pear.php.net/Console_Getopt-1.4.1 install ok: channel://pear.php.net/Structures_Graph-1.1.1 install ok: channel://pear.php.net/XML_Util-1.3.0 install ok: channel://pear.php.net/PEAR-1.10.1 PEAR: Optional feature webinstaller available (PEAR's web-based installer) PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer) PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer) PEAR: To install optional features use "pear install pear/PEAR#featurename" ** WARNING! Old version found at C:\usr\pear, please remove it or be sure to use the new c:\usr\pear\pear.bat command The 'pear' command is now at your service at c:\usr\pear\pear.bat
Y ya está, listo para la primera prueba:
c:\usr\pear> cd c:\usr c:\usr> pear clear-cache reading directory c:\Users\username\AppData\Local\Temp\pear\cache 0 cache entries cleared c:\usr> pear update-channels Updating channel "doc.php.net" Update of Channel "doc.php.net" succeeded Updating channel "pear.php.net" Update of Channel "pear.php.net" succeeded Updating channel "pecl.php.net" Update of Channel "pecl.php.net" succeeded c:\usr> pear upgrade downloading Archive_Tar-1.4.2.tgz ... Starting to download Archive_Tar-1.4.2.tgz (20,624 bytes) ........done: 20,624 bytes upgrade ok: channel://pear.php.net/Archive_Tar-1.4.2
Ya sólo nos faltaría instalar composer:
C:\usr> wget -qN --show-progress https://getcomposer.org/composer.phar -P c:\usr\bin\ composer.phar 100%[======================>] 1.74M 4.47MB/s in 0.4s
Para actualizar composer:
C:\usr> composer selfupdate Updating to version 1.3.1 (stable channel). Downloading: 100% Use composer self-update --rollback to return to version 285ff274accb24f45ffb070c2b9cfc0722c31af4
Ahora ya estamos listos para crear y ejecutar nuestros scripts PHP en línea de comandos.
En la próxima entrega instalaremos XAMPP y reemplazaremos el PHP incorporado por el que acabos de instalar.
Hace ya tiempo de mi última entrada de apuntes de electrónica. Fue la entrada sobre…
Looking for cheap multimeters I found the Zoyi ZT-300AB, for about €20 we have a…
In my search for interesting multimeters I came across a manufacturer whose multimeters were sold…
Desde que la industria empezó a deslocalizar sus fabricas llevando gran parte del peso de…
Desde que vi por primera vez una pinza amperimétrica quise tener una. Con la aparición…