Accueil du site > Les articles > Mettre en oeuvre php sur ISeries
Version à imprimer Enregistrer au format PDF

Mettre en oeuvre php sur ISeries

lundi 6 novembre 2006, par Serge Gomes Visites  4731

Il semblerait qu’IBM porte un intérêt grandissant sur PHP. En attendant un support natif de ce language, voici comment vous pouvez utiliser php sur ISeries.


A partir de la V5R4 il est possible de faire tourner php sur ISeries avec PASE (Portable Application Solutions Environnement) et HHTP Server Apache for ISeries.

Une autre solution consite à installer PHP sur un LPAR Linux. Cette solution n’est pas présentée dans cet article.

Pour accèder à votre base de données DB2/400, vous utiliserez les routines ODBC : Pour un PC le plus simple est d’installer Client Access qui contient un driver ODBC pour l’AS/400 (les routines ODBC sont présentes en natif sous OS/400 sous le nom de CLI).

Installer PHP sur ISERIES
- Téléchargez les sources depuis http://www.php.net et compilez avec un compilateur AIX, ou téléchargez une version déja compilée pour cela visitez ces 2 sites :

— http://www.i5php.net/
— http://aixpdslib.seas.ucla.edu/index.html

- Décompressez et restaurer les fichiers dans /QopenSys/php.

Paramétrer le serveur Apache

Pour que le serveur Apache Web reconnaisse les fichiers PHP, vous devez mettre à jour le fichier de configuration (httpd.conf) du serveur Web.

ScriptAlias /php-bin/ /usr/local/php/bin
AddType application/x-httpd-php .php
Action application/x-http-php /php-bin/php

Pour configurer votre serveur Apache, vous pouvez utiliser l’assistant accessible par http://monAS400:2001/HTTPAdmin (remplacez monAS400 par votre ISERIE). Attention le serveur *ADMIN doit être actif sur l’AS400 (à lancer par STRTCPSVR).

- Après avoir sélectionné (ou créé) le serveur Apache que vous voulez utilisez sélectionner sous l’onglet Tools l’option "Edit Configuration". Cela permet d’éditer le fichier de configuration httpd.conf de votre serveur Apache.

Ce fichier est stocké dans l’IFS, il est possible de l’éditer directement avec WRKLNK puis EDTF.

- Ajoutez les directives suivantes à votre fichier de configuration :
— Pour notre exemple le serveur se nomme srvphp et tourne sur le port 9080.
— Les sources php sont stockés sous /www/srvphp/ex et requiert un logging sur la machine hôte (votre ISeries).

  # définition d'une directory avec obligation de se logguer
  # les sources php sont placés ici
  <Directory /www/srvphp/ex>
       Order Allow,Deny
       Allow From all
       Require valid-user
       UserID %%CLIENT%%
       PasswdFile %%SYSTEM%%
       AuthType Basic
       AuthName "Connexion ISeries"  
  </Directory>
  ScriptAlias /php-bin/ /QOpenSys/php/bin/
  # définition d'un nouveau type mime
  AddType application/x-httpd-php .php
  # forcer l'exécution pour un type donné
  Action application/x-httpd-php /php-bin/php
  <Directory /QOpenSys/php/bin>
       CGIConvMode %%BINARY/BINARY%%
       Options +ExecCGI
       order allow,deny
       Allow From all
  </Directory>

Exemple N°1 :

Cet exemple (query.php) propose de saisir une requête sql dans un formulaire puis d’afficher le résultat. Il sera accessible par http://monAS400:9080/query.php

texte - 1.9 ko
query.php

Exemple N°2 : Cet exemple (wrkactjob.php)ne fonctionne qu’avec la version PASE de PHP. Il utilise la commande « system » qui permet de rediriger une commande AS400 vers la sortie standard (stdout). Cet exemple utilise la commande WRKACTJOB. Il sera accessible par http://monAS400:9080/wrkactjob.php

html>
<head>
<title>Travaux actifs</title>
</head>
<H1>PHP Executer WRKACTJOB avec PASE</H1><br>
<?PHP
$lsout=`/QOpenSys/usr/bin/system 'wrkactjob'`;
$line = strtok($lsout,"\n");
print "<table border CELLSPACING=0 CELLPADDING=0>";
print "<tr>";
print "<td><pre>";
print $line;
print "</pre></td>";
print "</tr>";
while ($line = strtok("\n"))
{
print "<tr>";
print "<td><pre>$line</pre></td>";
print "</tr>";
}
print "</table>";
?>
</body>
</html>

P.-S.

Nouveau Zend propose PHP sur I5/OS (V5R40 uniquement). Pour en savoir plus ... Zend

Documents joints