PHP


Introduction et installation de PHP sur I5 & IBM i.



BoTTom



Introduction

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 plateforme Linux et le gestionnaire de base de données MySQL, le langage PHP s'appuie sur un logiciel Open Source, libre et gratuit. Il demeure la solution la plus économique pour développer des applications Internet à un coût minimum.

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.

Associé à MySQL, le langage PHP permet de développer des applications web puissantes reliées si nécessaire à des bases de données.

Empruntant des concepts à des langages tels que Perl ou C, PHP est un langage de script capable de fonctionner sur n'importe quelle plateforme. En effet, chacun des systèmes d'exploitation de Microsoft, Unix, Linux ou encore Mac OS X, peut devenir un support pour des applications Internet écrites en PHP en accueillant un module spécifique s'intégrant au serveur web en place (souvent  Apache)

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 installe en fait un serveur Apache sous Pase qui tourne sur un autre port (8000, modifiable) , il faut alors utiliser une directive PROXY pour rerouter les requêtes vers cet autre serveur (depuis le serveur Apache "natif" de I5/OS).

L'intéret du serveur Apache2 sous Pase (c'est véritablement celui d'UNIX) pour Zend, c'est de réutilsier les routines existantes, particulièrement celles permettant de lancer PHP en mode module, ce qui offre les meilleures performances et le debug avec ZendStudio.


 

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/ Téléchargez le fichier zippé sur le site de ZEND, dézippez et transférez (en binaire) via FTP le SAVF ZCOREPROD dans QGPL

3/ Passez ensuite la commande RSTLICPGM LICPGM(1ZCORE5) DEV(*SAVF) SAVF(QGPL/ZCOREPROD)

cela doit vous afficher l'écran de licence suivant :

La version définitve (GA) porte le N°  V1R4M1

Puis vous entrerez un mot de passe pour l'administrateur


Ensuite vient la phase de connexion au serveur Zend (pour les mises à jour), vous devez avoir créé un compte sur le site de Zend.


cela va ajouter un poste au scheduler I5/OS (WRKJOBSCDE)

Les dernières version vous demandent, si vous souhaitez installer MYSQL (version 5.0)

Puis

L'installation a modifié QSYSWRK pour ajouter un poste de routage, et vous pouvez lancer le menu GO ZENDCORE/ZCMENU 

Cette installation contient une version d'Apache pour Unix tournant sur le port 8000(Zend indique que cela permet d'utiliser php en mode module, ce qui est plus rapide). cela a probablement permis aussi la réutilisation du debuger de ZendCore. Pour modifier cette instance, particulièrement le port 8000, voyez /usr/local/Zend/apache2/conf/httpd.conf

 

pour lancer manuellement ce serveur,  utilisez le menu (ZCMENU) ou bien (depuis QP2TERM)

                   /usr/local/zend/apache2/bin/apachectl -k start | stop

ou bien, encore, placez dans un CL :
 

SBMJOB     CMD(CALL PGM(QP2SHELL)  PARM('/usr/local/Zend/apache2/bin/apachectl' '-k' 'start'))
                            JOB(APACHE2) JOBQ(QUSRNOMAX [par exemple)] )


  La version 1.4.1 propose de nouveaux services accessibles depuis le menu ZCAMENU
(option 5 du précédent)

 
          Dont le lancement du sous système Zend

Ceci dit l'installation du produit a ajouté un travail à démarrage automatique à QSYSWRK (travail ZC_STR_SBS utilisant la Jobd ZCOREJOBDX ) qui démarre le sous système Zend.

Des services sont lancés automatiquement dans le sous système, particulièrement le serveur Apache/Unix sur le port 8000 et 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, proposant :

 

i5_program_prepare, i5_program_call, i5_program_close

i5_command, i5_cmdget

i5_get_system_value

i5_error, i5_errormsg

Pour plus de détai, voyez  la documentation à :
                http://www.zend.com/content/download/1842/11547/file/Zend_Core_User_Guide_i5OS.pdf

Attention, si vous utilisez ce toolkit, vos pages ne sont plus "portables" sur un autre OS (Windows ou Linux)

 



Cette installation a aussi créé une instance APACHE/UNIX, pilotée par le menu ZCAMENU








puis une instance APACHE NATIVE (nommée ZENDCORE et qui est lancée dans QHTTPSVR
par la commande STRTCPSVR *HTTP )
  

 

Vous pouvez modifier cette instance, si vous n'avez pas actuellement de serveur APACHE

 

pour modifier la configuration (/www/zendcore/conf/httpd.conf), directive listen *:89 et remplacer par le port 80

 

ou bien ajouter à votre serveur apache existant :

 

LoadModule proxy_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM        
LoadModule proxy_http_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM   
LoadModule proxy_connect_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM
LoadModule proxy_ftp_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM

puis

ProxyPass / http://localhost:8000/       
ProxyPassReverse / http://localhost:8000/   

dont vous devez vous inspirer pour completer votre instance de production, par exemple :

ProxyPass /php http://localhost:8000/exemplesphp       
ProxyPassReverse /php http://localhost:8000/exemplesphp    

Qui demande à ce que chaque requête dont l'URL commence par /php soit redirigée vers le port 8000, donc vers le serveur apache2 sous Pase, url exemplesphp
(sachant que ce répertoire doit exister dans /www/zendcore/htdocs, qui est le répertoire par défaut du moteur ZendCore)

ainsi que
ProxyPass /core http://localhost:8000/      

 ProxyPassReverse /core http://localhost:8000/

permettant d'accèder à la racine du nouveau site
           

     et donc un accès au coeur du produit

           
            Indiquez ici, le mot de passe saisi lors de l'installation

et voilà !


Avec cette version, MYSQL, n'est pas activé par défaut, il faut modifier php.ini (dans /usr/local/Zend/core/etc) et enlever le caractère ; (qui commente une ligne) devant mysql.so et mysqli.so

 

Zend Studio propose un outil de debug, en dialogue direct avec le serveur ZendCore sur le I5 (ou AS400)

Autorisez une adresse ou une plage d'adresses IP à faire du debug dans php.ini


Configuration/Zend studio server


Ici toutes les adresses IP 10.* sont autorisées ( zend_debugger.allow_hosts dans /usr/local/zend/Core/etc/php.ini)


Sur le client ZendStudio, choisissez Outils/Personnalisation puis l'onglet "débogage"

et indiquez
Mode de débogage : serveur
URL du serveur : http://votre-as-400:8000/ (le serveur Apache2 tournant sous Pase)


Vous pourrez alors demander l'exécution d'une page sur le serveur et lancer le debug

Sur le client Zend Studio for Eclipse

Demandez la liste des serveurs PHP, afin d'en créer un (ne travaiillez pas avec le serveur par défaut qui est local):

 



Indiquez ici les coordonnées directes du serveur Apache de ZendCore (celui tournant sous PASE sur le port 8000, donc)

 


Puis, lancez le debug.


Pour plus de détails sur Zend Core , voyez :


 

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 iSeries ou en plus MYSQL),

 

BoTTom

 

©AF400