Installation sous Netscape et iPlanet Enterprise Serveur sur un système Sun Solaris
Cette section contient les notes et détails spécifiques à l'installation de PHP sur
les serveurs Web Sun Java System Web Server,
Sun ONE Web Server, iPlanet et Netscape server sur les systèmes Sun Solaris.
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 serverus courants, voyez la
note sur les sous-requêtes.
Vous pouvez trouver plus d'informations sur la configuration de
PHP avec Netscape Enterprise Server :
» http://benoit.noss.free.fr/php/install-php4.html
Pour construire PHP avec les serveurs Web Sun JSWS/Sun ONE WS/iPlanet/Netscape, entrez
le répertoire valide d'installation pour l'option
--with-nsapi=[DIR].
Le répertoire par défaut est habituellement
/opt/netscape/suitespot/.
Lisez également le fichier /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
-
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)
-
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 à votre système avec export PATH
.
-
gunzip php-x.x.x.tar.gz
(si vous avez une distribution .gz, ou bien allez en 4).
-
tar xvf php-x.x.x.tar
-
Passez dans votre dossier d'extraction PHP :
cd ../php-x.x.x
-
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
-
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.
Instructions de configuration pour Sun/iPlanet/Netscape
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/.
-
Ajoutez les lignes suivantes dans mime.types en tant qu'administrateur :
type=magnus-internal/x-httpd-php exts=php
-
Éditez le fichier magnus.conf (pour les serveurs >= 6) ou
le fichier obj.conf (pour les serveurs < 6) et
ajoutez-y les lignes suivantes.
shlib peut varier en fonction de votre OS. Pour Unix, c'est
quelque chose 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_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) Le paramètre php_ini
est optionnel
mais, avec lui, vous pouvez placer votre 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 [version 6.0+] dans leur fichier
vserver.obj.conf) :
<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" [inikey=value inikey=value ...]
.
.
</Object>
(PHP >= 4.3.3) Comme paramètres additionnels, vous pouvez ajouter
quelques valeurs spéciales dans le php.ini. Par exemple, vous pouvez définir
un spécifique docroot="/path/to/docroot"
où
le contexte php4_execute
est appelé. Pour les init-keys booléens,
utilisez les valeurs 0/1, et non pas "On","Off",...
(cela ne fonctionnera pas correctement), e.g.
zlib.output_compression=1
au lieu de
zlib.output_compression="On"
-
Cela est nécessaire uniquement si vous voulez configurer un répertoire
pour accueillir des scripts PHP tout comme un répertoire
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 répertoire dans le serveur d'administration
et y assigner le style x-httpd-php
. Tous les fichiers dans ce répertoire
seront exécutés comme étant du PHP. C'est pratique pour cacher l'usage de PHP
en renommant les fichiers en .html.
-
Configuration de l'identification : les identifications PHP ne peuvent être
utilisées avec aucune autre identification.
TOUTES LES IDENTIFICATIONS SONT PASSEES À VOS SCRIPTS PHP.
Pour configurer l'identification PHP pour tout le serveur web, ajoutez
la ligne suivante à votre objet par défaut :
<Object name="default">
AuthTrans fn=php4_auth_trans
.
.
.
</Object>
-
Pour utiliser l'identification PHP dans un seul répertoire, ajoutez ce qui suit :
<Object ppath="d:\path\to\authenticated\dir\*">
AuthTrans fn=php4_auth_trans
</Object>
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 à des variables comme PATH_INFO
,
HTTP_HOST
etc., il n'est pas recommandé d'y accéder
à l'ancienne manière de PHP, 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 fait 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 dossier (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="/chemin/vers/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="/chemin/vers/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.
Note:
Soyez prévenu : le support de nsapi_virtual() est EXPERIMENTAL !