Servidores Sun, iPlanet y Netscape sobre Sun Solaris

Esta sección contiene notas y consejos específicos al servidor web Sun Java System, servidor web Sun ONE, instalaciones de servidores iPlanet y Netscape de PHP sobre Sun Solaris.

A partir de PHP 4.3.3 en adelante se pueden utilizar scripts PHP con el módulo NSAPI para generar listados de directorio y páginas de errores personalizados. Funciones adicionales para compatibilidad con Apache también se encuentran disponibles. Para soporte en servidores web actuales, léase la nota sobre subpeticiones.

Se puede encontrar más información acerca de configurar PHP para Netscape Enterprise Server (NES) aquí: » http://benoit.noss.free.fr/php/install-php4.html

Para construir PHP con los servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape, introduzca el directorio de instalación apropiado para la opción --with-nsapi=[DIR]. El directorio por omisión es comúnmente /opt/netscape/suitespot/. Por favor también léase /php-xxx-version/sapi/nsapi/nsapi-readme.txt.

  1. Instalar los siguientes paquetes de »  http://www.sunfreeware.com/ o algún otro sitio de descargas:

    • autoconf-2.13
    • automake-1.4
    • bison-1_25-sol26-sparc-local
    • flex-2_5_4a-sol26-sparc-local
    • gcc-2_95_2-sol26-sparc-local
    • gzip-1.2.4-sol26-sparc-local
    • m4-1_4-sol26-sparc-local
    • make-3_76_1-sol26-sparc-local
    • mysql-3.23.24-beta (si se desea soporte para mysql)
    • perl-5_005_03-sol26-sparc-local
    • tar-1.13 (GNU tar)

  2. Asegurar que la ruta de acceso incluye los directorios apropiados PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin y hacer que esté disponible al sistema export PATH.
  3. gunzip php-x.x.x.tar.gz (si se tiene una distribución .gz, de lo contrario ir a 4).
  4. tar xvf php-x.x.x.tar
  5. Cambiarse al directorio de PHP ya extraído: cd ../php-x.x.x
  6. Para el siguiente paso, asegurar que /opt/netscape/suitespot/ sea donde el servidor netscape está instalado. De no ser así, cambiar a la ruta de acceso correcta y ejecutar:

    ./configure --with-mysql=/usr/local/mysql \
    --with-nsapi=/opt/netscape/suitespot/ \
    --enable-libgcc

  7. Ejecutar make seguido por make install.

Después de realizar la instalación base y de leer el fichero readme apropiado, es posible que sea necesario realizar algunos pasos adicionales de configuración.

Instrucciones de configuración para Sun/iPlanet/Netscape

Primeramente quizás sea necesario agregar algunas rutas de acceso al entorno LD_LIBRARY_PATH para que el servidor encuentre todas las librerías compartidas. Esto puede hacerse de mejor manera en el script de arranque del servidor web. El script de arranque se encuentra comúnmente localizado en: /ruta/al/servidor/https-servername/start. Quizás también sea necesario editar los ficheros de configuración que están ubicados en: /ruta/al/servidor/https-servername/config/.

  1. Agregar la siguiente línea a mime.types (se puede hacer esto por medio del servidor de administración):

    type=magnus-internal/x-httpd-php exts=php
    

  2. Editar magnus.conf (para servidores >= 6) u obj.conf (para servidores < 6) y agregar lo siguiente, shlib variará dependiendo del sistema, será algo así como /opt/netscape/suitespot/bin/libphp4.so. Se deben colocar las siguientes líneas después de mime types init.

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
    Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
    
    (PHP >= 4.3.3) El parámetro php_ini es opcional pero con él se puede colocar php.ini en el directorio de configuración del servidor web.

  3. Configurar el objeto por omisión en obj.conf (para clases de servidor virtual [versión 6.0+] en su vserver.obj.conf):

    <Object name="default">
    .
    .
    .
    .#NOTA esta siguiente línea debería ocurrir después de todos las líneas 'ObjectType' y antes de todas las líneas 'AddLog'
    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    .
    .
    </Object>
    
    (PHP >= 4.3.3) Como parámetros adicionales se pueden agregar algunos valores especiales de php.ini, por ejemplo se puede fijar una docroot="/ruta/a/raíz_de_documentos" específica al contexto php4_execute es llamado. Para llaves ini boleanas favor de utilizar 0/1 como valor, no "On","Off",... (esto no funcionará correctamente), por ejemplo. zlib.output_compression=1 en vez de zlib.output_compression="On"

  4. Esto es sólo necesario si se quiere configurar un directorio que solamente consiste de scripts de PHP (igual que un directorio cgi-bin):

    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute [inikey=value inikey=value ...]
    </Object>
    
    Después de configurar un directorio en el servidor de administración y asignarle el estilo x-httpd-php. Todos los ficheros en éste se ejecutarán como PHP. Esto está bien para esconder el uso de PHP renombrando los ficheros a .html.

  5. Configuración de la autenticación: La autenticación PHP no puede ser utilizada con ninguna otra autenticación. TODA AUTENTICACION LE ES PASADA AL SCRIPT DE PHP. Para configurar la autenticación de PHP para el servidor entero, agregar la línea siguiente al objeto por omisión:

    <Object name="default">
    AuthTrans fn=php4_auth_trans
    .
    .
    .
    </Object>
    

  6. Para utilizar autenticación de PHP en sólo un directorio, agregar lo siguiente:

    <Object ppath="d:\ruta\al\directorio\auntenticado\*">
    AuthTrans fn=php4_auth_trans
    </Object>
    

Nota:

El tamaño de la pila que utiliza PHP depende de la configuración del servidor web. Si se tienen fallas generales con scripts de PHP muy grandes, se recomienda elevarlo con el servidor de administración (en la sección "MAGNUS EDITOR").

Ambiente CGI y modificaciones recomendadas en php.ini

Importante cuando se escriben scripts de PHP, es el hecho de que Sun JSWS/Sun ONE WS/iPlanet/Netscape es un servidor web multihilos. Por ello todas las peticiones se corren en el mismo espacio de proceso (el espacio del servidor web mismo) y este espacio tiene solamente un ambiente. Si se quiere tener variables CGI como PATH_INFO, HTTP_HOST etc. la manera correcta no es intentar esto al viejo estilo de PHP con getenv() o una manera similar (registrar globales al ambiente, $_ENV). Solamente se obtendrá el ambiente del servidor web que se está ejecutando. ¡Sin ninguna variable CGI válida!

Nota:

¿Por qué hay variables CGI (inválidas) en el ambiente?

Respuesta: Esto es por que se inició el proceso del servidor web desde el servidor de administración que ejecuta el script de arranque del servidor web, que se quería iniciar, como un script de CGI (¡Un script de CGI dentro del servidor de administración!). Esto es el porque el ambiente de el servidor web iniciado tiene algunas variables de CGI en él. Se puede probar esto iniciando el servidor web, no desde el servidor de administración. Utilizar la línea de comando como usuario root e iniciarlo manualmente - se verá que no hay variables de ambiente a la CGI.

Simplemente cámbiense los scripts para obtener las variables CGI de la manera correcta para PHP 4.x utilizando la superglobal $_SERVER. Si se tienen scripts más antiguos que usan $HTTP_HOST, etc., se debe activar register_globals en php.ini y cambiar el orden de las variables también (importante: quitar "E" de ésta, porque no se necesita el entorno aquí):

variables_order = "GPCS"
register_globals = On

Uso especial para páginas de error o listados personalizados de directorios (PHP >= 4.3.3)

Se puede utilizar PHP para generar páginas de errores para "404 Not Found" o similares. Agregar la siguiente línea al objeto en obj.conf por cada página de error que se quiera sobreescribir:

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
donde XXX es el código de error HTTP. Favor de borrar cualquier otra directiva Error que pudiese interferir con la propia. Si se desea colocar una página para todos los errores que puedan existir, dejar fuera el parámetro code. El script puede obtener el código de estado HTTP con $_SERVER['ERROR_TYPE'].

Otra posibilidad es generar listados de directorio personalizados. Solamente creando un script PHP que despliegue un listado de directorio y reemplazando la línea por omisión correspondiente Service por type="magnus-internal/directory" en obj.conf con lo siguiente:

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
Para ambas páginas, de error y listados de directorio la URI original y la URI traducida están en las variables $_SERVER['PATH_INFO'] y $_SERVER['PATH_TRANSLATED'].

Nota acerca de nsapi_virtual() y subpeticiones (PHP >= 4.3.3)

El módulo NSAPI ahora soporta la función nsapi_virtual() (alias: virtual()) para realizar subpeticiones en el servidor web e insertar el resultado en la página web. Esta función utiliza algunas características no documentadas de la librería NSAPI. En Unix el módulo automáticamente busca las funciones necesarias y las utiliza si están disponibles. Si no, se deshabilita nsapi_virtual().

Nota:

Pero se advierte: El soporte para nsapi_virtual() es ¡¡¡EXPERIMENTAL!!!