domingo, 11 de noviembre de 2012

Instalar Apache + PHP + MySQL en Windows 7 (Avanzado) 64bits

Prerequisitos

Para todas las instalaciones tenemos que tener en cuenta la arquitectura dependiendo si nuestro sistema es de 32bits.
Si bajamos e instalamos Apache desde la web de
www.apachelounge.com antes necesitaremos instalar el “Visual C++ 2010 SP1 Redistributable Package” para 32 o 64bits igualmente.

Bajamos Apache y la DLL de Apache para PHP

  • Vamos a http://www.apachelounge.com/download/win64/ y bajamos la ultima versión, en mi caso Apache 2.4.3 64bit en zip (httpd-2.4.3-win64.zip)
  • Bajate el modulo de fcgid (mod_fcgid-2.3.7-win64.zip)
    Nota: Este Modulo lo usaremos cuando vayamos a configurar Apache para que pueda trabajar con PHP.


Bajamos PHP


Bajamos MySQL



Descomprimimos todo

  • Descomprimimos Apache para que quede en c:\apache24 (carpeta por defecto para esta compilación)
  • Descomprimimos PHP en c:\php
  • Descomprimimos mod_fcgid-2.3.7-win64.zip y copiamos el modulo que se encuentra en mod_fcgid/mod_fcgid.so en C:\Apache24\modules\

Definir las variables de entorno
Vamos a inicio > Panel de control > Sistema > Configuración avanzada del sistema > Variables de entorno > Seleccionamos la variable del sistema “Path” en la segunda lista de la ventana > pulsamos el botón que dice “Editar...> Donde dice valor de la variable añadimos al final las siguientes rutas separadas por “;”:

c:\php
c:\apache24\bin

Así:

(Lo que quiera que sea que haya ya);C:\php;c:\apache24\bin;

set path=”%path%;C:\php;c:\apache24\bin

Esto nos permitirá dos cosas, primero que si Apache PHP necesitan estas rutas para encontrar sus librerías las encuentren, y segundo que podremos usarlos desde la ruta de comandos sin necesidad de escribir la ruta cada vez.Nota: Para que estos cambios se apliquen lo más cómodo es reiniciar. Es una idea muy extendida aunque en teoría no hace falta... Si en vez de editar las variables de entorno así se hubiese hecho por terminal (cmd.exe), bastaría con cerrar dicha terminal y volverla a abrir.


Configuración básica de Apache

Abrimos a C:\apache24\conf\httpd.conf y verifica que estas directivas esten igual que aquí:
ServerRoot "c:/Apache24"
ServerName localhost:80
DocumentRoot "c:/Apache24/htdocs"

Y para configurar PHP en Apache le ponemos al final esto:
<IfModule fcgid_module> FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;" FcgidInitialEnv SystemRoot "C:/Windows" FcgidInitialEnv SystemDrive "C:" FcgidInitialEnv TEMP "C:/WINDOWS/Temp" FcgidInitialEnv TMP "C:/WINDOWS/Temp" FcgidInitialEnv windir "C:/WINDOWS" FcgidIOTimeout 40 FcgidConnectTimeout 10 FcgidMaxProcesses 8 FcgidOutputBufferSize 64 ProcessLifeTime 240 FcgidMaxRequestsPerProcess 500 FcgidMinProcessesPerClass 0 <Files ~ "\.php$>" Options Indexes FollowSymLinks ExecCGI AddHandler fcgid-script .php SetEnv PHPRC "C:/php" FcgidWrapper "C:/php/php-cgi.exe" .php </Files> </IfModule> 

Configuración básica de PHP

Vamos a c:\php\ y renombramos el php-production.ini o el php-development.ini a php.ini lo abrimos y nos aseguramos que esta directiva este así extension_dir = "ext" y descomentada (sin el ; delante).

Buscamos la lista de extensiones en el archivo php.ini y descomentamos la de php_pdo_mysql:
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll  ; Sin esto el phpmyadmin podría fallar al manejar strings
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll

; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=php_snmp.dll

;extension=php_soap.dll
;extension=php_sockets.dll
extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

En PHP 5.4 en teoría ya viene configurado todo lo que es mysqli, mysqlnd, de serie... De todas formas al final, cuando estemos de todo pondré un script para comprobar que Apache, MySQLnd, PDO etc están activados.

Guarda el documento


Con Apache iniciado ya deberías poder acceder desde http://localhost/ 



Iniciar y parar Apache y MySQL

Abrimos dos terminales (pulsamos Windows + R y escribimos cmd.exe) y escribimos httpd -k start y mysqld en cada terminal para iniciar Apache y MySQL.

Para cerrar Apache y MySQL
httpd -k stop y mysqld -u root shutdown respectivamente.

También podemos instalar los dos servidores como servicios del sistema. httpd -k install y mysqld --installLuego puede iniciarse y pararse con net start/stop Apache2.4 y net start/stop mysql


Comprobar que los tres servers funcionan

Creamos un archivo index.php en c:\apache24\htdocs y le ponemos esto dentro:

<?php
echo "Apache enabled!"; echo '<br />';

if (function_exists('mysqli_fetch_all')) { echo 'MySQLnd enabled!'; echo '<br />'; }
if (defined('PDO::ATTR_DRIVER_NAME')) { echo 'PDO enabled!'; echo '<br />'; }

try {
   $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', '');
   
   if (strpos($dbh->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) {
   echo 'PDO MySQLnd enabled!';
}
} catch (PDOException $e) {
   echo 'Connection failed: ' . $e->getMessage();
}

Luego vamos a http://localhost/index.php

9 comentarios :

  1. recuerda que debes instalar el servicio para que corra correctamente apache.

    Se hace de esta forma mediante consola como administrador

    httpd -k install -n "Nombre del servicio" donde "nombre del servicio" es Apache

    ResponderBorrar
  2. me sale esto Connection failed: could not find driver, en la tercer comprobacion

    ResponderBorrar
    Respuestas
    1. Hola Mario, trata de observar si edito correctamente el archivo php.ini, ya que al parecer no descomentarizo "extension=php_pdo_mysql.dll". Y si esta bien, reinicia los servicios para que php, mysql y apache tomen las configuraciones.

      Borrar
  3. Hermano se que este post es viejo pero al instalar todo me sale solo esto.

    '; if (function_exists('mysqli_fetch_all')) { echo 'MySQLnd enabled!'; echo '
    '; } if (defined('PDO::ATTR_DRIVER_NAME')) { echo 'PDO enabled!'; echo '
    '; } try { $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); if (strpos($dbh->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) { echo 'PDO MySQLnd enabled!'; } } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }

    Imagino que por ser php5.5.11 y httpd 2.4.9, tendra algo que ver con las extensiones?

    Saludos.

    ResponderBorrar