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.
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.
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.
(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) :
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 :
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".
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.
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 :
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'].
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.