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_
Instalando PHP con Apache en Unix
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_
Instalando PHP con apache 1_3_x en Windows
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"_