Manuel PHP
Précédent | Chapitre 3. Installation | Suivant

# Installation sous Netscape et iPlanet Enterprise Serveur

Cette section contient les notes et détails spécifiques à l'installation Netscape et iPlanet, aussi bien pour Sun Solaris que Windows.

Vous pouvez trouvez plus d'informations sur la configuration de PHP avec Netscape Enterprise Server : http://benoit.noss.free.fr/php/install-php4.html

## Installer PHP avec Netscape sous Sun Solaris

Pour compiler PHP avec NES ou iPlanet, indiquez le bon dossier d'installation pour l'option de configuration --with-nsapi = `DIR` option. Le dossier par défaut est généralement `/opt/netscape/suitespot/`. Lisez aussi `/php-xxx-version/sapi/nsapi/nsapi-readme.txt`.

> Note : Ces instructions, valables pour Sun Solaris 2.6 avec Netscape Enterprise Server 3.6, sont l'oeuvre de bhager at invacare dot com.

1. Installez les packages suivants depuis le serveur http://www.sunfreeware.com/ ou un miroir ad hoc :

   `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 vous voulez le support MySQL)
   `perl-5_005_03-sol26-sparc-local`
   `tar-1.13` (GNU tar)

2. Assurez-vous que le path inclut bien les dossiers nécessaires : `PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin` et rendez le accessible à vortre système avec `export PATH`.

3. `gunzip php-x.x.x.tar.gz` (si vous avez une distribution .gz, ou bien allez en 4).

4. `tar xvf php-x.x.x.tar`

5. Passez dans votre dossier PHP : `cd ../php-x.x.x`

6. Pour les étapes suivantes, assurez-vous que `/opt/netscape/suitespot/` correspond bien à votre installation du serveur netscape. Sinon, indiquez le chemin correct :

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

7. Faites un make puis un make install.

Après avoir fait l'installation de base et lu les fichiers readme.txt, vous pouvez avoir besoin de faire des configurations supplémentaires.

D'abord, vous devez ajouter des chemins dans la variable LD_LIBRARY_PATH pour que PHP trouve toutes les librairies partagées. Le mieux est de le faire dans le script de démarrage de votre serveur Netscape. Les utilisateurs Windows peuvent probablement ignorer cette étape. Le script de démarrage est situé dans : `/path/to/server/https-servername/start`

Vous pouvez aussi avoir besoin d'éditer les fichiers de configuration qui sont situés dans : `/path/to/server/https-servername/config/`.

Instructions de configuration pour Netscape Entreprise Server. Tout d'abord, vous aurez besoin d'ajouter des chemins dans la variable `LD_LIBRARY_PATH` pour que Netscape trouve son bonheur. Il est préférable de le faire dans le script de démarrage du serveur Netscape. Les utilisateurs Windows peuvent ignorer cette étape. Le script de démarrage est souvent situé dans : `/path/to/server/https-servername/start`. Vous aurez peut être à éditer le fichier de configuration situé dans `/path/to/server/https-servername/config/`.

1. Ajoutez les lignes suivantes dans `mime.types`:

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

2. Ajoutez les lignes suivantes dans `obj.conf`. shlib peut varier en fonction de votre OS. Pour Unix, c'est quelquechose comme `/opt/netscape/suitespot/bin/libphp4.so`. Il est conseillé de placer les lignes suivantes après les lignes de `mime types init`.

       Init fn="load-modules" funcs="php4_init,php4_close,php4_execute,php4_auth_trans" shlib="/php4/nsapiPHP4.dll"
       Init fn=php4_init errorString="Failed to initialize PHP!"

3. Configurez les valeurs par défaut :

       <object name="default">
       .
       .
       .
       .#NOTE this next line should happen after all 'ObjectType' and before all 'AddLog' lines
       Service fn="php4_execute" type="magnus-internal/x-httpd-php"
           .
           .
           </Object>

4. Créez un nouvel objet pour `PHP` :

       <Object name="x-httpd-php">
       ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
       Service fn=php4_execute
       </Object>

5. Configuration d'authentification L'authentification PHP ne peut pas être utilisée avec d'autres authentifications. TOUTES LES FORMES D'AUTHENTIFICATION SONT PASSEES AU SCRIPT PHP. Pour configurer l'authentification PHP pour le serveur entier, ajoutez la ligne suivante :

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

6. Pour utiliser l'identification `PHP` sur un seul dossier, utilisez la ligne suivante :

       <Object ppath="d:\path\to\authenticated\dir\*">
       AuthTrans fn=php4_auth_trans
       </Object>

Si vous utilisez Netscape Enterprise 4.x, alors, il faut utiliser ceci : placez ces lignes dans les informations d'initialisation des types Mime, et tout ce qui y est rattaché dans la configuration ci-dessus : (fourni par Graeme Hoose, GraemeHoose at BrightStation dot com).

    Init fn="load-modules" shlib="/path/to/server4/bin/libphp4.so" funcs="php4_init,php4_close,php4_execute,php4_auth_trans"
    Init fn="php4_init" LateInit="yes"

## Installer PHP avec Netscape Enterprise sous Windows

Pour installer PHP sous forme de CGI (pour Netscape Enterprise Server, iPlanet, peut être Fastrack), suivez ces instructions :

- Copiez le fichier `php4ts.dll` dans votre dossier systemroot (le dossier où vous avez installé windows)

- Faîtes un fichier d'association depuis la ligne de commande. Tapez les lignes suivantes :

      assoc .php=PHPScript
      ftype PHPScript=c:\php\php.exe %1 %*

- Dans le serveur Netscape Enterprise Administration Server, créez un dossier shellcgi et supprimez-le aussitôt (cette opération crée 5 lignes importantes dans le fichier obj.conf et permet au serveur de gérer les scripts CGI).

- Dans le serveur Netscape Enterprise Administration Server, créez un nouveau type MIME (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).

- Recommencez pour chaque instance de serveur web qui devra exécuter PHP.

Plus de détails sur la configuration de PHP comme CGI sont disponibles à http://benoit.noss.free.fr/php/install-php.html

Pour installer PHP avec l'interface NSAPI (pour Netscape Enterprise Server, iPlanet, peut-être Fastrack), faîtes ceci :

- Copiez le fichier `php4ts.dll` dans votre dossier systemroot (le dossier où vous avez installé windows)

- Faîtes un fichier d'association depuis la ligne de commande. Tapez les lignes suivantes :

      assoc .php=PHPScript
      ftype PHPScript=c:\php\php.exe %1 %*

- Dans le serveur Netscape Enterprise Administration Server, créez un nouveau type MIME (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).

- Stoppez votre serveur web et éditez le fichier `obj.conf`. A la fin de la section Init, placez ces deux lignes (obligatoirement après l'init de type MIME) :

      Init fn="load-modules" funcs="php4_init,php4_close,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
      Init fn="php4_init" errorString="Failed to initialise PHP!"

- Dans la section `< Object name="default" >`, placez cette ligne, obligatoirement après toutes les lignes 'ObjectType' et avant les lignes 'AddLog' :

      Service fn="php4_execute" type="magnus-internal/x-httpd-php"

- A la fin du fichier, créez un nouvel objet appelé `x-httpd-php`, en insérant ces lignes :

      <Object name="x-httpd-php">
      ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
      Service fn=php4_execute
      </Object>

- Redémarrez votre serveur web, et validez les modifications

- Recommencez pour chaque serveur qui doit utiliser PHP.

Plus de détails sur la configiration de PHP en filtre NSAPI sont disponibles : http://benoit.noss.free.fr/php/install-php4.html

> Note : La taille de la pile que `PHP` utilise dépend de la configuration du serveur web. Si vous rencontrez des crashs avec les grands scripts `PHP`, il est recommandé d'augmenter la taille de la pile avec la console d'administration : dans la section "MAGNUS EDITOR".

## Environnement CGI et modification recommandées du `php.ini`

Il est important de garder en tête que iPlanet/SunONE/Netscape est un serveur web multi-threadé. Comme toutes les requêtes se situent dans le même contexte (c'est le contexte sur serveur web), et que ce contexte est unique. SI vous voulez accéder a des variables comme `PATH_INFO`, `HTTP_HOST` etc. il n'est pas recommandé d'y accéder à la manière de `PHP` 3.x, avec la fonction getenv() ou une autre méthode (register globals, `$_ENV`). De cette manière, vous n'aurez que des valeurs d'environnement du serveur, et non pas des valeurs correctes pour le CGI.

> Note : Pourquoi est-ce que les variables CGI sont invalides?

> C'est lié au faut que le processus du serveur web est lancé par l'administrateur du serveur, qui utilise le script de lancement au démarrage. En fait, il aurait fallu que vous lanciez vous-même le processus. C'est pour cela que l'environnement du serveur web contient des variables d'environnement CGI. Vous pouvez vérifier cela en lançant le serveur web depuis un autre endroit que l'administrateur du serveur : utilisez la ligne de commande Unix en tant que root : vous verrez alors qu'il n'y a pas de variables d'environnement.

Changez simplement vos scripts pour lire les variables CGI, en utilisant le tableau superglobal `$_SERVER`. Si vous avez d'autres scripts qui utilisent encore `$HTTP_HOST`,..., il est recommandé d'activer l'option `register_globals` dans le `php.ini` et de changer l'ordre des variables. important: supprimez le `"E"` dans cette option, car vous n'en avez pas besoin pour cet environnement.

    variables_order = "GPCS"
    register_globals = On

## Utilisation particulière pour les pages d'erreurs ou les listages spécifiques de dossier (PHP >= 4.3.3)

Vous pouvez utiliser PHP pour générer des pages d'erreurs de type `"404 Not Found"` ou apparantée. Ajoutez la ligne suivante dans le fichier `obj.conf` pour chaque page d'erreur que vous souhaitez remplacer :

    Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]

où `XXX` est le code d'erreur HTTP. Effacez toute autre directive `Error` qui pourrait interférer avec la votre. Si vous voulez utiliser une page pour toutes les erreurs qui existent, laissez le paramètre `code` vide. Votre script peut obtenir le code de statut HTTP dans la variable `$_SERVER['ERROR_TYPE']`.

Une autre possibilité est de générer une liste de dossier personnalisée. Créez simplement un script PHP qui affiche le contenu du dossier, et remplacez la ligne `Service` par défaut par `type="magnus-internal/directory"` dans `obj.conf` avec ceci :

    Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]

Pour ces deux points, l'URI originale et l'URI traduite sont dans les variables `$_SERVER['PATH_INFO']` et `$_SERVER['PATH_TRANSLATED']`.

## Note au sujet de nsapi_virtual() et des requêtes (PHP >= 4.3.3)

Le module NSAPI supporte désormais la fonction nsapi_virtual() (alias : virtual()), pour réaliser des sous requêtes au serveur web, et inclure le résultat dans une page. Le problème est que cette fonction utilise une fonctionnalité non documentée de la librairie NSAPI.

Sous Unix, ce n'est pas un problème, car le module va automatiquement rechercher les fonctions nécessaires, et les utiliser si elles sont disponibles. Sinon, nsapi_virtual() sera désactivée.

Sous Windows, des limitations dans la gestion des DLL impose l'utilisation de la plus récente librairie `ns-httpdXX.dll`. Cela a été testé pour les serveurs jusqu'à la version 6.0. Si une nouvelle version de SunONE server est utilisée, la détection échoue, et nsapi_virtual() est désactivée.

Dans ce cas, essayez ceci : ajoutez le paramètre suivant à `php4_init` dans `magnus.conf`/`obj.conf`:

    Init fn=php4_init ... server_lib="ns-httpdXX.dll"

où `XX` est le numéro correct de la version de la DLL. Pour la connaître, regardez dans le `server-root` pour connaitre le nom correct de la DLL. La DLL la plus grande en taille est la bonne.

Vous pouvez vérifier le status en utilisant la fonction phpinfo().

> Note : Soyez prévenu : le support de nsapi_virtual() est expérimental.

Précédent | Sommaire | Suivant
Installation avec les serveurs IIS/PWS | Niveau supérieur | Installation pour les serveurs OmniHTTPd