Esta sección contiene información específica
sobre la instalación de PHP con Apache,
tanto para la versión Unix como Windows. Las instrucciones
de instalación con
apache2 se encuentran en su propia página.
Se pueden seleccionar argumentos a usar con el comando
configure de la linea 10 de más abajo, de la
lista completa de opciones de
configuración. Los números de versiones han sido omitidos
aqui para asegurarse que las instrucciones no son incorrectas,
debeis cambiar 'xxx' con los valores correctos de vuestros
ficheros.
Ejemplo 3-5.
Instrucciones de instalación para PHP (Versión módulo compartido
de Apache)
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. Ahora, configurar vuestro PHP. En este paso podeis configurar PHP
con diferentes opciones, como por ejemplo que extensiones estaran
dispobibles. Podeis ejecutar ./configure --help para obtener una
lista con las opciones que podeis usar. En nuestro ejemplo,
configuramos con Apache y soporte MySQL. Vuestro path a apxs puede
diferir del nuestro, dependiendo donde lo tengais instalado.
./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install
Si decides cambiar las opciones de configuración despues de la
instalación, solamente se necesita repetir los tres ultimos
pasos. Solamente se necesita arrancar de nuevo Apache para que
cargue el nuevo modulo. No es necesario recompilar Apache.
Tener en cuenta que si no se especifica lo contrario, 'make install'
tambien instala PEAR, diferentes herramientas PHP tal como phpsize,
PHP CLI y mas.
13. Configurar vuestro fichero php.ini
cp php.ini-dist /usr/local/lib/php.ini
Se puede editar el fichero php.ini para configurar como PHP
funciona. Si quereis tener este fichero en otra localizacion, podeis
usar --with-config-file-path=/path en el paso 10.
Si usais el fichero php.ini-recommended, asegurarse de leer la
lista de cambios en este fichero, ya que afectan al modo de
funcionamiento de PHP.
14. Editar httpd.conf para cargar el modulo PHP. El path a la derecha
de 'LoadModule' debe de coincidir con el path donde el modulo PHP
se encuentre en vuestro sistema. El comando que habeis ajecutado
anteriormente 'make install' puede que haya anadido esto, pero
asegurarse de comprobar que el cambio ha sido hecho.
Para PHP 4:
LoadModule php4_module libexec/libphp4.so
Para PHP 5:
LoadModule php5_module libexec/libphp5.so
15. Y en la seccion 'AddModule' en httpd.conf, anadir:
Para PHP 4:
AddModule mod_php4.c
Para PHP 5:
AddModule mod_php5.c
16. Tenemos que decirle a Apache que extension vamos a utilizar en
nuestros scripts PHP. Podemos utilizar la extension
.php para PHP aunque podemos anadir la extension que queramos
separadas con un espacio. En nuestro ejemplo utilizaremos por
ejemplo .php y .phtml
AddType application/x-httpd-php .php .phtml
Tambien se sulele utilizar la extension .phps para mostrar el
codigo PHP coloreado. Para ello tenemos que anadir la siguiente linea:
AddType application/x-httpd-php-source .phps
17. Utilizar el procedimiento habitual que utiliceis para arrancar
Apache. (Debeis de parar y arrancar Apache, no vale recargar
(reload) usando una señal HUP ó USR1).
Dependiendo de vuestra instalación de Apache y variante Unix,
existen numerosas maneras de parar y arrancar el servidor
Apache. Más abajo teneis las maneras más típicas de parar y
arrancar el servidor en diferentes instalaciones de
apache/unix. /path/to/ se tiene que actualizar
Ejemplo 3-6. Ejemplos de comandos para rearrancar Apache
1. En ciertas variantes de Linux y SysV:
/etc/rc.d/init.d/httpd restart
2. Usando el script apachectl :
/path/to/apachectl stop
/path/to/apachectl start
3. httpdctl y httpsdctl (Usando OpenSSL), similar a apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start
4. Usando mod_ssl, u otro servidor SSL, quizas querais parar y
arrancar manualmente:
/path/to/apachectl stop
/path/to/apachectl startssl
La localización de los binarios apachectl y http(s)dctl
suele variar. Si tu sistema tiene los comandos
locate ó whereis
ó which, podeis utilizarlos para
localizar los programas de control de vuestro servidor.
Diferentes ejemplos de compilación de PHP para Apache:
./configure --with-apxs --with-pgsql
Esto creará una biblioteca compartida
libphp4.so que será cargada por Apache usando
una linea LoadModule en el fichero de configuración de Apache
httpd.conf. Soporte para PostgreSQL es incorporado en la
biblioteca libphp4.so.
./configure --with-apxs --with-pgsql=shared
Esto creará una biblioteca compartida
libphp4.so que será cargada por Apache, pero
creará tambien una biblioteca compartida
pgsql.so que se puede cargar por PHP usando ó
la directiva de la extensión en el fichero php.ini ó cargandola
explicitamente en un script usando la función
dl().
Esto creará una biblioteca libmodphp4.a, un
fichero mod_php4.c y algunos otros
pequeños ficheros y copiara todo al directorio
src/modules/php4 en el directorio fuente de
Apache. Apache hay que compilarlo entonces con
--activate-module=src/modules/php4/libphp4.a y
el sistema de generación de apache se encargará de crear el fichero
libphp4.a y enlazarlo estáticamente al binario
httpd. El soporte para PostgreSQL es incluido
directamente en el binario httpd, asi que el
resultado final en un solo fichero binario
httpd que incluye todo el Apache y PHP.
Igual que el ejemplo anterior, excepto que el soporte para
PostgreSQL no se incluye directamente en
httpd, se crea una biblioteca compartida
pgsql.so que hay que cargar en PHP, bien desde
el fichero php.ini ó directamente usando la función
dl().
Antes de escoger el método a utilizar para instalar PHP, debeis
considerar los pros y los contras de cada método. Compilarlo como
una biblioteca compartida tiene la ventaja de poder compilar Apache
por separado y de no tener que recompilar todo si añadimos ó
cambiamos PHP. Compilando PHP estaticamente en Apache significa que
PHP cargará más rapidamente y se ejecutará más rapido. Para más
información, vea la página de Apache sobre soporte DSO.
Nota:
El fichero de configuración por defecto de Apache, httpd.conf,
viene con una sección como esta:
User nobody
Group "#-1"
A menos que esto se cambie a "Group nogroup" ("Group daemon"
tambien es muy común), PHP no podra abrir ficheros.
Nota:
Asegurarse que la versión especificada de apxs cuando se usa
--with-apxs=/path/to/apxs, es la
version instaladada en tu sistema y no la versión que se encuentra
en directorio con las fuentes de Apache.
Existen dos maneras de utilizar PHP con Apache 1.3.x en
Windows. Una es usar el binario CGI (php.exe), la otra es usar el
módulo Apache DLL. En ambos casos, hay que parar el servidor Apache
y editar el fichero de configuración httpd.conf para configurar
Apache con PHP.
Hay que decir que el módulo SAPI es más estable ahora bajo Windows,
recomendamos utilizarlo en vez del binario CGI, ya que es más
transparente y seguro.
Aunque existen diferentes maneras de configurar PHP con Apache,
estas son lo suficientemente simples como para que un iniciado
pueda usarlas. Consultar la documentación de Apache para más
información sobre directivas de configuración.
Si descomprimimos PHP en c:\php\, tal y como
se describe en la sección Pasos para una instalación
manual, necesitamos introducir estas lineas en el fichero de
configuración de Apache para configurar el binario CGI:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
La segunda linea de esta lista, se encuentra en la versión actual
de httpd.conf, pero esta comentada. Recordar que teneis que
cambiar c:/php/ con el "path" a vuestro
directorio PHP.
Aviso
El uso de la opción CGI abre la posibilidad de posibles ataques a
tu servidor. Por favor, leer la sección sobre Seguridad con la versión CGI
para aprender como defenderse de estos ataques.
Si vais a utilizar PHP como módulo de Apache, debeis copiar
php4ts.dll al directorio
windows/system (para Windows 9x/Me),
winnt/system32 (para Windows NT/2000) ó
windows/system32 (para Windows XP),
sobreescribiendo cualquier fichero antiguo. Una vez copiado, debeis
modificar el fichero httpd.conf:
Editar httpd.conf en vuestro editor favorito, localizar la
directiva LoadModule y añadir la
siguiente linea al final de la lista para PHP 4:
LoadModule php4_module
c:/php/sapi/php4apache.dll, o para PHP 5
LoadModule php5_module
"c:/php/sapi/php5apache.dll"
Puede ocurrir que despues de usar el instalador de Apache para
Windows, tengais que definir la directiva
AddModule para
mod_php4.c. Esto es especialmente
importante si la directiva ClearModuleList
está definida. Añadir AddModule
mod_php4.cal final de la lista
de directivas AddModule. Para PHP 5, usar
AddModule mod_php5.c
Buscar una frase similar a # AddType allows you to
tweak mime.types. Vereis algunas definiciones del
tipo AddType, añadir al
final de la lista: AddType
application/x-httpd-php .php. Podeis elegir la
extensión que querais para los ficheros PHP. .php es nuestra
sugerencia. Se puede incluso tener .html y .php3 se puede
añadir por asuntos de compatibilidad hacia atras.
Despues de cambiar el fichero de configuración, recordar que teneis
que arrancar de nuevo Apache, por ejemplo, NET STOP
APACHE seguido de NET START APACHE, si
ejecutais Apache como un Servicio Windows, ó como lo hagais
normalmente.
Existen dos maneras para usar la característica de destacar el
código fuente, sin embargo, dependerá de nuestra instalación para
que funcionen. Si Apache esta configurado para usar PHP como módulo
SAPI, se puede usar esta carcterística añadiendo la linea
AddType application/x-httpd-php-source .phps al
fichero httpd.conf en el mismo lugar en donde añadimos
AddType application/x-httpd-php .php.
Si Apache esta configurado para usar PHP como binario CGI, debereis
utilizar la función show_source(). Para ello,
crear un script PHP y añadir este código <?php
show_source ("original_php_script.php"); ?>. Sustituir
original_php_script.php con el nombre del
fichero del que quereis presentar el código fuente.
Nota:
En Apache para Windows, todos los "backslashes" en un "path",
p.ej. "c:\directory\file.ext", deben de convertirse a "forward
slashes" , "c:/directory/file.ext".