Manuel PHP
Précédent | Chapitre 6. Installation sur les système Windows | Suivant

# Serveurs Sun, iPlanet et Netscape servers sur Microsoft Windows

Cette section contient les notes et détails spécifiques à l'installation de PHP sur des serveurs Sun Java System Web Server, Sun ONE web Server, Netscape et iPlanet, sous Windows.

Depuis PHP 4.3.3, vous pouvez utiliser les scripts PHP avec le module NSAPI pour gérer des listes de dossiers et des pages d'erreurs personnalisées. Des fonctions supplémentaires sont disponibles pour assurer la compatibilité avec Apache. Pour du support sur les serveurs courants, voyez la note sur les sous-requêtes.

## Configuration en CGI sur les serveurs Sun, iPlanet et Netscape

Pour installer PHP en CGI, suivez ce qui suit :

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

- Faites 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

## Configuration NSAPI sur les serveurs Sun, iPlanet et Netscape

Pour installer PHP avec l'interface NSAPI, faites ceci :

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

- Faites 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`.

- Éditez le fichier `magnus.conf` (pour les serveurs >= 6) ou `obj.conf` (pour les serveurs < 6) et ajoutez ce qui suit : Vous devez placer ces lignes après `mime types init`.

      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"]

  (PHP >= 4.3.3) Le paramètre `php_ini` est optionnel mais si vous le définissez, vous pourez placer votre fichier `php.ini` dans le dossier de configuration de votre serveur web.

- Configurez l'objet par défaut dans le fichier `obj.conf` (pour les classes de serveur virtuel [Sun Web Server 6.0+], dans le fichier `vserver.obj.conf`) : dans la section `<Object name="default">`, placez cette ligne nécessairement avant toutes les lignes 'ObjectType' et après toutes les lignes 'ObjectType' :

      Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]

  (PHP >= 4.3.3) Comme paramètres supplémentaires, vous pouvez ajouter quelques valeurs spéciales du `php.ini`, par exemple, vous pouvez définir un `docroot="/path/to/docroot"` spécifique au contexte où `php4_execute` est appelé, non pas `"On","Off",...` (cela ne fonctionnerait pas correctement), e.g. `zlib.output_compression=1` à la place de `zlib.output_compression="On"`

- Cela n'est nécessaire que si vous voulez configurer un dossier qui ne contiendra que vos scripts PHP (tout comme un dossier 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>

  Après cela, vous pouvez configurer un dossier dans l'administration du serveur et lui assigner le style `x-httpd-php`. Tous les fichiers s'y trouvant seront exécutés comme étant des scripts PHP. Cela peut être pratique pour cacher l'usage de PHP en renommant les fichiers en `.html`.

- Redémarrez votre serveur web pour que les modifications prennent effet.

- Faites cela pour chaque instance du serveur web où vous voulez exécuter PHP.

> Note : Plus de détails sur la configuration de PHP comme filtre NSAPI peuvent être trouvés ici : 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 modifications 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 faui 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` et compagnie, 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 dossiers (PHP >= 4.3.3)

Vous pouvez utiliser PHP pour générer des pages d'erreurs de type `"404 Not Found"` ou apparenté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 vôtre. 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 dossiers 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 bibliothèque 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 bibliothèque `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 connaître le nom correct de la DLL. La DLL la plus grande en taille est la bonne.

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

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

Précédent | Sommaire | Suivant
Installation des serveurs Apache 2.0.x sur les systèmes Microsoft Windows | Niveau supérieur | Installation pour les serveurs OmniHTTPd