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 :
![]() ![]() Quelques utilitaires :
PHP
Paramétrez ensuite votre serveur Apache avec les directives suivantes, pour utiliser php en mode CGI :
ScriptAlias /php-bin/ /QOpenSys/php/bin/ vous pouvez donc maintenant utiliser des produits écrits en php et utilisant mysql PHPMyAdmin ![]() ou SPIP ![]() voire Médiawiki ![]() mais vous pouvez, bien sur, accèder à votre base de données DB2/400 en utilisant les routines ODBC (elles sont présentes en natif sous OS/400 sous le nom de CLI) |
Quelques liens :
PHP 4 et 5 disponible sur PHP.net.
MySQL 4.0 disponible sur MySQL.com.
Apache 1.3.23 disponible sur Apache.org.
Le portage de tout ce petit monde sur I5 www.i5php.net
ou www.deloli.net
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'interet 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 :
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)
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 | stopou 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 ZendCeci 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 :
- Des APIs de connexion
i5_connect, i5_close, i5_adopt_authority
- Appel de programmes I5/OS (avec passage et récupération de paramètres) éventuellement en (ré)utilisant PCML
i5_program_prepare, i5_program_call, i5_program_close
- Passage de commandes I5/OS (y compris commandes comme RTVJOBA avec récupération des valeurs retour)
i5_command, i5_cmdget
- Accès aux valeurs système
i5_get_system_value
- Accès à la base de données, (dit mode natif)
- accès aux fichiers
i5_fetch_array, i5_fetch_assoc, i5_fetch_object, i5_fetch_row- accès en mode séquentiel/indexé
i5_info, i5_field_len, i5_field_name, i5_field_scale, i5 _field_type, i5_list_fields, i5_num_fields, i5_result
i5_open, i5_addnew, I5_edit, I5_delete, i5_cancel_edit, i5_setvalue, i5_update, i5_range_from, i5_range_to, i5_range_clear
i5_data_seek, i5_seek, i5_bookmark, i5_free_file, i5_new_record, i5_update_record, i5_delete_record, i5_get_keys
- Accès et manipulation de :
- DTAQ
i5_dtaq_prepare, i5_dtaq_receive, i5_dtaq_send, i5_dtaq_close- DTAARA
i5_data_area_create, i5_data_area_read, i5_data_area_write, i5_data_area_delete- UserSpace
i5_userspace_create, i5_userspace_get, i5_userspace_put, i5_userspace_delete
- Génération de listes système
- liste des objets
i5_objects_list, i5_objects_list_read, i5_ objects_list _close- liste des travaux
i5_job_list, i5_job_list_read, i5_ job_list _close- Liste des spool (et génération de spool pour la dernière API)
i5_spool_list, i5_spool_list_read, i5_spool_get_data, i5_spool_list_close, i5_spool_from_file- Historique d'un travail (JOBLOG)
i5_jobLog_list, i5_jobLog_list_read, i5_jobLog_list_close
- Gestion des erreurs et récupération des messages d'erreur.
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)
- ensuite, accès à la base de données en mode SQL par le connecteur DB2 ou ODBC (voyez notre cours PHP et Bases de données)
- les APIs DB2 sont les mêmes que celles de DB2 Connect
- les APIs ODBC unifiées sont comptabibles avec le driver ODBC de Client Access p.Windows/Linux, rendant vos pages les plus ouvertes possibles
- dernier point
vous pouvez aussi démarrer un script PHP depuis un pgm I5/OS en lancant la commande QSH :
QSH CMD('/usr/local/Zend/Core/bin/php-cli /mon-répertoire/mon-fichier.php parametre1 parmetre2')
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];
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.SRVPGMpuis
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/exemplesphpProxyPassReverse /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 :
- Ce site IBM : http://www-128.ibm.com/developerworks/systems/library/es-path2php/index.html?ca=dnw-741
- ou le Forum Zend à l'adresse suivante : http://www.zend.com/forums/index.php?t=thread&frm_id=13
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),
©AF400