Servidores Sun, iPlanet y Netscape en Microsoft Windows
Esta sección contiene anotaciones y consejos específicos de servidores Sun Java System Web Server, Sun ONE Web Server, iPlanet y Netscape en sistemas Windows.
Desde PHP 4.3.3 pueden usarse scripts PHP con el módulo NSAPI para generar listados de directorios y páginas de error personalizadas. También hay funciones adicionales para la compatibilidad con Apache. Para tener soporte con los servidores web actuales consulte las anotaciones sobre subpeticiones.
Instalación CGI en servidores Sun, iPlanet y Netscape
Para instalar PHP como un manejador CGI, haga lo siguiente:
- Copie php4ts.dll al raíz del sistema (directorio en el que instaló Windows)
-
Realice la asociación de ficheros en la línea de comandos. Introduzca las siguientes líneas:
assoc .php=PHPScript ftype PHPScript=c:\php\php.exe %1 %*
- En Netscape Enterprise Administration Server cree un directorio shellcgi temporal y bórrelo después (este paso añadirá 5 líneas importantes a obj.conf y permitirá que el servidor web maneje scripts shellcgi).
- En Netscape Enterprise Administration Server cree un nuevo tipo mime (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).
- Realícelo para cada instancia de servidor web en que desee ejecutar PHP
Se pueden encontrar más detalles sobre cómo configurar PHP como ejecutable CGI en » http://benoit.noss.free.fr/php/install-php.html
Configuración de NSAPI en servidores Sun, iPlanet y Netscape
Para instalar PHP con NSAPI, haga lo siguiente:
- Copie php4ts.dll al raíz de su sistema (directorio en que instaló Windows)
-
Haga la asociación de ficheros en la línea de comandos. Introduzca las siguientes líneas:
assoc .php=PHPScript ftype PHPScript=c:\php\php.exe %1 %*
- En Netscape Enterprise Administration Server cree un nuevo tipo mime (Category: type, Content-Type: magnus-internal/x-httpd-php, File Suffix: php).
-
Edite magnus.conf (para servidores >= 6) o obj.conf (para servidores < 6) e introduzca lo siguiente: Debe ubicar estas líneas tras mime types init.
(PHP >= 4.3.3) El parámetro php_ini es opcional, pero usándolo se puede reubicar el fichero php.ini al directorio de configuración del servidor web.Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll" Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]
-
Configure el objeto por omisión en obj.conf (para clases de servidores virtuales [Sun Web Server 6.0+] en su fichero vserver.obj.conf): En la sección <Object name="default">, añada esta línea tras los 'ObjectType' y antes de las líneas 'AddLog':
(PHP >= 4.3.3) Se pueden añadir parámetros adicionales del tipo php.ini-values, por ejemplo, se puede especificar el docroot="/path/to/docroot" específico para el contexto en que se invoca a php4_execute. En las claves ini booleanas, debe usarse 0 o 1 como valor, y nunca "On","Off",... (no funcionará correctamente), p.ej. zlib.output_compression=1 en lugar de zlib.output_compression="On"Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
-
Esto sólo es necesario si se desea configurar un directorio que consista únicamente en scripts PHP (como en los directorios cgi-bin):
Tras eso, se puede configurar un directorio en la administración del servidor para asignarle el estilo x-httpd-php. Todos los ficheros que contenga se ejecutarán con PHP. Es útil para ocultar el uso de PHP, renombrando los ficheros a .html.<Object name="x-httpd-php"> ObjectType fn="force-type" type="magnus-internal/x-httpd-php" Service fn=php4_execute [inikey=value inikey=value ...] </Object>
- Reinicie el servidor web y aplique los cambios
- Realícelo para cada instancia del servidor web en que desee ejecutar PHP
Nota:
Puede consultar más detalles sobre cómo configurar PHP como filtro NSAPI aquí: » http://benoit.noss.free.fr/php/install-php4.html
Nota:
El tamaño de pila de PHP depende de la configuración del servidor web. Si la ejecución de scripts extensos de PHP se detiene, se recomienda que lo propague con Admin Server (en la sección "MAGNUS EDITOR").
entornos CGI y modificaciones recomendadas en php.ini
Al escribir scripts PHP es importante tener en cuenta que Sun JSWS/Sun ONE WS/iPlanet/Netscape es un servidor web multihebra, ya que todas las peticiones se ejecutan en el espacio del mismo proceso (el espacio del propio servidor web) y este espacio sólo contiene un entorno de ejecución. Si se desea conocer variables CGI como PATH_INFO, HTTP_HOST, etc. no se debe hacer de la forma convencional con getenv() o similares (register globals del entorno, $_ENV). Sólo se obtendrá el entorno del servidor web en ejecución sin ninguna variable CGI válida.
Nota:
¿Pero por qué hay variables CGI (inválidas) en el entorno?
Respuesta: Se debe a que se inició el proceso del servidor web desde el servidor de administración que lanza el script de inicio del servidor web como un script CGI (¡un script CGI dentro del servidor de administración!). Ésta es la razón por la que el entorno del servidor web contiene algunas variables de entorno CGI. Puede comprobarlo iniciando el servidor web de otra forma. Acceda al terminal como administrador y arránquelo a mano - verá que ya no hay variables de entorno CGI.
Deben actualizarse los scripts, para que consulten variables CGI de la forma correcta para PHP 4.X, usando la superglobal $_SERVER. Si se tuvieran scripts antiguos que usaran $HTTP_HOST, etc., debería habilitarse register_globals en php.ini, así como cambiar la variable de orden (importante: elimine la "E", ya que aquí no se necesitan variables de entorno):
variables_order = "GPCS" register_globals = On
Uso especial de páginas de error y listados de directorios personalizados (PHP >= 4.3.3)
Se puede utilizar PHP para generar páginas de error para "404 Not Found" o similar. Debe añadirse la siguiente línea al objeto en obj.conf para cada página de error que se desee redefinir:
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
Otra posibilidad es generar listados de directorios personalizados. Debe crearse un script PHP que liste el contenido de un directorio y reemplace la línea del servicio correspondiente para type="magnus-internal/directory" en obj.conf por lo siguiente:
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
Anotaciones sobre nsapi_virtual() y subpeticioness (PHP >= 4.3.3)
El módulo NSAPI ahora soporta la función nsapi_virtual() (alias: virtual()) para hacer subpeticiones al sevidor web e insertar el resultado en la página web. El problema es que esta función utiliza algunas funcionalidades no documentadas de la biblioteca NSAPI.
En Unix esto no es un problema, porque el módulo automáticamente busca las funciones necesarias y las usa si estuvieran disponibles. Si no, nsapi_virtual() queda deshabilitado.
En Windows, las limitaciones del manejo de DLL necesitan emplear detección automática del fichero ns-httpdXX.dll más reciente. Se ha probado hasta en servidores versión 6.1. Si se utiliza una versión más reciente del servidor Sun, la detección falla y nsapi_virtual() se deshabilita.
Si este fuera el caso, debe probarse lo siguiente: Añada el siguiente parámetro a php4_init en magnus.conf/obj.conf:
Init fn=php4_init ... server_lib="ns-httpdXX.dll"
Puede comprobar el estado usando la función phpinfo().
Nota:
Pero tenga en cuenta: El soporte para nsapi_virtual() es EXPERIMENTAL.