Le langage PHP (Hypertext Preprocessor) est devenu en quelques années d'existence, le langage de programmation de sites web dynamiques le plus populaire à coté de Java et des JSP (Java Server Page).
De même que le serveur web Apache, la plate-forme Linux et le gestionnaire de base de données MySQL, le langage PHP s'appuie sur un logiciel Open Source, libre et gratuit.
PHP est un langage de script fonctionnant essentiellement côté serveur. Les scripts PHP, à l'instar de l'ASP (Active Server Pages) de Microsoft ou de NetData sur iSeries, sont incorporés directement avec le balisage HTML, au sein d'une page Web.
En outre, le langage PHP possède de nombreux outils facilitant sa connectivité
à des bases de données comme non seulement son SGBDR (Système
de Gestion de Bases de Données Relationnelles) de prédilection,
MySQL, mais aussi quasiment tous les autres tels que DB2, Sybase, Oracle, ou
SQL Server.
Installation :
Ce produit utilise la norme fastCGI, qui est disponible sur IBM i nativement sur une version 7 et via PTF sur une 6.1 ou 5.4
Avec cette technique le serveur Apache de IBM i peut lancer des scripts sous PASE, supprimant l'obligation d'avoir un deuxième serveur Apache de type Unix.
Important, Zend Server peut être installé, à coté de Zendcore, sans perturber le moins du monde ce dernier. Les 2 produits cohabitent parfaitement.
Pré-requis :
1/ vérifiez que vous avez les logiciels sous licence suivants :
Code (option) | Produit |
5722SS1 (33) | PASE |
5722SS1 (30) | Qshell |
5722SS1 (13) | System Openness Includes |
5722SS1 (34) | Digital Certificate Manager |
5733SC1(*base) | IBM Portable Utilities For I5/OS |
5733SC1 (1) | OpenSSH ,OpenSST,Zlib |
Le répertoire /usr/local doit exister
(créez
le, s'il le faut, par MKDIR) et ne doit pas être un lien symbolique
2/ vérifiez que vous avez les PTF suivantes
3/ Téléchargez
le fichier zippé sur le site de ZEND, dézippez et transférez
(en binaire) via FTP le SAVF ZSVRSAVF
ou ZSVRSAVF6 dans QGPL
4/ Passez ensuite la commande
Pour Zend Server 5 :
RSTLICPGM
LICPGM(2ZSRVPI) DEV(*SAVF) SAVF(QGPL/ZSVRsavf)
Pour Zend Server 6 :
RSTLICPGM
LICPGM(6ZSRVPI) DEV(*SAVF) SAVF(QGPL/ZSVRsavf6)
Pour Zend Server 7 :
RSTLICPGM LICPGM(7PHPZND) DEV(*SAVF) SAVF(QGPL/zendphp7))
nb : vous pouvez installer les trois versions du produit (5 , 6 et 7) en parallèle, les serveurs n'utilisent pas les mêmes ports IP
Version 5 ou 6
cela doit vous afficher l'écran de licence suivant (ici Version 5) ou équivalent
Choisissez si vous souhaitez installer MYSQL ou non (cela n'est pas possible, s'il existe déjà un répertoire /usr/local/MYSQL)
Et voilà !
ZendSVR7
Le sous système ZENDSVR est lancé automatiquement grâce à un travail à démarrage automatique ZS_STR_SBS ajouté à QSYSWRK.
Le serveur Apache ZendSvr ou ZendSvr6 ou Zendphp7, aussi. Vous pouvez modifier cette instance, si vous n'avez pas actuellement de serveur.
--> pour modifier la configuration
(/www/zendxxx/conf/httpd.conf), directive listen
*:10088 ou 10080 (v6) et remplacer par le port 80
Modifiez aussi la langue du fichier fastcgi.conf qui contient à tort une config pour un OS en langue 2924 (US) , comme montré ci-dessous
Remplacez en_US par fr_FR
ou bien ajouter à votre serveur apache existant :
Dans le même temps vous devez créer un fichier fastcgi.conf dans le même répertoire que le fichier httpd.conf
contenant
NB : pour un ZendServer V6, le répertoire est zendsvr6 et non zendsvr
NB : Pour un ZendServer V7, le répertoire est zendphp7
Quelques commentaires
Server type="application/x-httpd-php" | la chaîne doit être la même que pour la directive AddType du fichier httpd.conf |
CommandLine="/usr/local/ZendSvr/bin/php-cgi.bin | Coordonnées du PGM PASE à lancer, remplacer Zendsvr par Zendsvr6 pour passer en V6 |
StartProcesses="1" | Démarrer le pgm PASE à l'avance (1 = oui) |
SetEnv="PHP_FCGI_CHILDREN=5 | Nombre de travaux à démarrer |
SetEnv="CCSID=819" | CCSID des fichiers .php (SetEnv="CCSID=1208" si vos bases sont en Unicode) |
SetEnv="LANG=fr_FR" | Doit être le code langage de la langue primaire (2928 en France) |
SetEnv="INSTALLATION_UID=20101216110903706188" | recopiez la valeur de fastcgi.conf du répertoire /www/zendsvr/conf |
En règle générale, testez vos droits, particulièrement si vous avez utilisé précédemment ZendCore, ce n'est plus NOBODY qui est le profil de référence mais QTMHHTTP.
Relancez le serveur Apache, puis accédez à l'URL (par défaut http://<votre-as400>:10088/ZendServer)
Acceptez la licence
Fixez un mot de passe d'accès aux pages d'administration
Enfin, entrez votre clé, si vous en avez une, sinon le produit tournera en mode Community Edition (CE)
Pour finir, fermez cet assistant.
Relancez le serveur Apache, puis accédez à l'URL (par défaut http://<votre-as400>:10081/) la version 6 utilise un port IP séparé pour l'administration
A la première utilisation, vous lancerez un assistant
acceptez la licence
indiquez le type d'utilisation
Fixez un mot de passe d'accès aux pages d'administration
Le serveur redéamarre
Vous est alors affiché le tableau du bord du serveur :
Les services sont lancés automatiquement dans le sous système ZendSvr (version 5 uniquement, en V6 voyez ici), particulièrement un travail I5_COMD faisant tourner un programme EASYCOMD (origine AURA équipement) correspondant au "I5 PHP API Toolkit" qui contient des API spécifiques à l'AS/400.
Attention, avec la version 5.1 Zend propose une solution de remplacement le "PHP Toolkit XML Service" écrit avec IBM , Open source et plus orienté Objets.
getInstance pour se connecter Exemple : include_once 'authorization.php'; include_once '../API/ToolkitService.php'; $ToolkitServiceObj = ToolkitService::getInstance(“*LOCAL”, “USER”, “PASSWORD”, “ibm_db2” ou “odbc“);
documentation disponible à http://files.zend.com/help/Zend-Server-IBMi/php_toolkit_xml_service_functions.htm
Des exemples d'utilisation sont aussi accessibles sous /www/zendsvr/htdocs/NewTooKit/
Tous les services peuvent être Gérer depuis le menu ZSMENU (bibliothèque ZENDSVR en V5, ZENDSVR6 en V6) , option 5
Les premières versions de Zend Server, possédaient des bugs sur la fonction ODBC :
un bug de conversion de données, réglé avec la version 5.0.4
un bug sur odbc_setoption, qui attend un quatrième paramètre numérique alors que dans le cas de l'option SQL_ATTR_DBC_DEFAULT_LIB il s'agit d'une chaîne
odbc_setoption($db, 1, SQL_ATTR_DBC_DEFAULT_LIB, $database))ce bug est réglé avec la version 5.1 uniquement.
La versions de Zend Server6, modifie le fonctionnement de la fonction ODBC :
en effet une connexion sans profil ni mot de passe (avec le profil en cours, soit QTMHHTTP) n'est plus possible
Ce module odbc , n'est pas activé par défaut (ni en V5 ni en V6), il faut l'activer dans les pages d'administration
en V6 ->
dernier point
vous pouvez aussi démarrer un script PHP depuis un pgm I5/OS en lançant la commande QSH :
QSH CMD('/usr/local/zendsvr[6]/bin/php-cli /mon-répertoire/mon-fichier.php parametre1 parametre2')
si cela doit être fait depuis un RPG, lancez QSH par QCMDEXC
dans le script php, récupérez les paramètres par :
$param1 = $_SERVER['argv'][1];
$param2 = $_SERVER['argv'][2];
Zend Studio propose un outil de debug,
en dialogue direct avec le serveur Zend Server
Demandez la liste des serveurs PHP, afin d'en créer un (ne travaillez pas avec le serveur par défaut qui est local):
Indiquez ici les coordonnées du serveur Apache pour Zend Server
Puis, lancez le debug.
Il ne vous reste plus qu'à écrire vos pages PHP, Voyez les éditeurs disponibles
puis voyez s'il le faut l'initiation au
langage., enfin l'accès aux bases de données (Sur
System i
ou en plus MYSQL),