-Natalia & Gualty - Appunti Linux - PHP & SOAP - 1

 
   CONFIGURAZIONI PC E RETI
ovvero... come abbiamo fatto dalla A alla Z.
 
HOME DOCUMENTI PROGETTI RISORSE DOMANDE ARTICOLI

 PHP & NUSOAP: INSTALLAZIONE ED ESEMPIO
 ultimo aggiornamento: 23 aprile 2003 ore 16.00
 
 
PROBLEMATICA
Installazione nusoap per creazione server-client SOAP in linguaggio PHP.
 
COS'E' PHP
PHP e' un linguaggio di programmazione adatto per la costruzione di siti web dinamici (come lo e', ad esempio, ASP).
PHP e' utilizzabile sia su Linux che su Windows, ed e' gratuito.
PHP si integra perfettamente con Apache Server.

 
COS'E' SOAP
SOAP (Simple Object Access Protocol) e' un protocollo di comunicazione basato su XML che permette lo scambio di informazioni tra programmi scritti anche in linguaggi differenti.
Ad esempio, tramite SOAP e' possibile creare delle funzioni in PHP e utilizzarle in Visual Basic 6.
Solitamente le informazioni relative a SOAP "viaggiano" sulla stessa porta utilizzata dai server web (porta 80), per cui non e' necessario cambiare le impostazioni dei firewall presenti sulla rete.
Nel caso generale, il sistema e' composto da un programma client che esegue delle richieste SOAP e da un server che risponde alle richieste SOAP.

 
COS'E' NUSOAP
Nusoap e' una libreria che permette la costruzione di applicazioni server e client in PHP basate sul protocollo SOAP.
Tramite nusoap e' possibile creare e utilizzare in modo facile e rapido delle funzionalita' utilizzabili mediante protocollo SOAP.

 
COME FUNZIONA PHP + NUSOAP
Nel caso di PHP + NUSOAP, il server viene implementato mediante l'utilizzo di Apache Server e PHP a cui vengono aggiunte le funzionalita' SOAP tramite la libreria nusoap.
Nusoap consiste del file nusoap.php da importare negli script PHP che creano il servizio lato server, e negli script che implementano (eventualmente) il lato client in PHP.

 
PREREQUISITO: SERVER LINUX CON APACHE E PHP INSTALLATI
Si da' per scontato che Apache e PHP siano installati sul PC Linux.
Riferirisi alla propria distribuzione Linux per l'installazione di Apache e PHP.
Il sito ufficiale di Apache si trova all'indirizzo

www.apache.org

Il sito ufficiale di PHP si trova all'indirizzo

www.php.net

 
ESEMPIO
Supponiamo di voler creare una funzione che mi restituisce qual e' la home o qual e' la shell di un utente Linux sul PC dove installiamo il servizio.
Le informazioni sono contenute nel file /etc/passwd. e sono rispettivamente il sesto e settimo campo della linea relativa all'utente.
Ad esempio, l'utente tizio sara' codificato in questo modo:

tizio:x:1000:1000:Nome Cognome:/home/tizio:/bin/bash

In questo caso, la home di tizio e' /home/tizio e la sua shell e' /bin/bash.

Chiameremo la funzione in PHP UserLinux($user,$how) dove $user e' l'utente e $how puo' essere HOME o SHELL.

 
FASI
1) installazione di nusoap;
2) struttura generale file server;
3) esempio file server;
4) struttura generale file client in PHP;
5) esempio file client in PHP su web;

 
FASE 1: INSTALLAZIONE DI NUSOAP
Nusoap puo' essere scariato dal sito

dietrich.ganx4.com/nusoap/

L'installazione di nusoap e' banale, in quanto consiste unicamente nella copia del file scaricato in una directory scelta a piacere, ad esempio in /var/www/strumenti e nell'importazione del file stesso negli script PHP mediante l'istruzione

require_once('/var/www/strumenti/nusoap.php');

 
FASE 2: STRUTTURA GENERALE FILE SERVER
La struttura generale di un file server e' semplicissima:

<?php

require_once('/var/www/strumenti/nusoap.php');
$s = new soap_server;
$s->register('nomefunzione1');
$s->register('nomefunzione2');

function nomefunzione1($arg1,$arg2)
{
...
...
}


function nomefunzione2($come)
{
...
...
}

$s->service($HTTP_RAW_POST_DATA);
?>


 
FASE 3: ESEMPIO FILE SERVER
Nel nostro esempio una possibile implementazione del file server sara' la seguente:

<?php

require_once('/var/www/strumenti/nusoap.php');
$s = new soap_server;
$s->register('UserLinux');

function UserLinux($user,$how){
// optionally catch an error and return a fault
if($user == ''){
return new soap_fault('Client','','Occorre specificare il nome.');
}

$linea=`cat /etc/passwd|grep '^$user\:'`;
if ($linea != "")
{

$array = split(":", $linea);

if ($how == "SHELL")
{
return chop($array[6]);
}
elseif($how == "HOME")
{
return $array[5];
}
else
{
return "-2";
}

}
else
{
return "-1";
}
}

$s->service($HTTP_RAW_POST_DATA);

?>

La funzione UserLinux si avvale del comando grep per estrarre da /etc/passwd la linea relativa all'utente richiesto (mediante un'espressione regolare).
Se l'utente esiste, la variabile $linea contiene le informazioni che vengono splittate nella varaiabiel $array mediante l'struzione split (la quale utilizza : come separatore).
A questo punto $array[5] conterra' la home e $array[6] conterra' la shell (si ricorda che 4array[0] e' il primo elemento dell'array, e quindi $array[5] e' il sesto elemento).

Chiamiamo il file serversoap.php e salviamolo in una directory richiamabile da Apache (ad esempio, se /var/www e' la root di Apache, creiamo la directory /var/www/nusoap e copiamo serversoap.php in essa).
Supponiamo che il server Apache sia configurato su un PC con ip 192.168.0.64.
In questo modo il servizio e' installato e richiamabile all'indirizzo http://192.168.0.64/nusoap/serversoap.php da applicazioni che possono utilizzare il protocollo SOAP.

 
FASE 4: STRUTTURA GENERALE FILE CLIENT IN PHP
Utilizzando nusoap e poche istruzioni in PHP e' possibile creare velocemente un file client per provare il servizio che abbiamo appena creato.
La struttura generale di un file client e' la seguente:

<?php

require_once('/var/www/strumenti/nusoap.php');

$parameters = array('arg1'=>'uno','arg2'=>'due');
$soapclient = new soapclient('http://192.168.0.64/nusoap/serversoap.php');
echo $soapclient->call('nomefunzione1',$parameters);
unset($soapclient);
?>

Abbiamo in questo caso tenuto 192.168.0.64 come indirizzo del server.

 
FASE 5: ESEMPIO FILE CLIENT SU WEB
Per quanto riguarda il nostro esempio, una possibile implementazione del file client e' la seguente:

<?php

require_once('/var/www/strumenti/nusoap.php');


$parameters = array('user'=>$nuser,'how'=>$how);
$soapclient = new soapclient('http://192.168.0.64/nusoap/prova_server.php');
echo "<html><body bgcolor=green><font color=yellow><b>";
echo "Il dato <font color=orange>$how</font> richiesto per l'utente <font color=orange>$nuser</font> ha prodotto il seguente risultato:<br>";
echo $soapclient->call('UserLinux',$parameters);
unset($soapclient);

echo "</b></font></body></html>";
?>

Chiamando il file clientsoap01.php e salvandolo in /var/www/nusoap e' possibile richiamare la pagina tramite browser passando come argomenti il nome dell'utente (nuser=...) e il tipo di informazione (how=HOME o how=SHELL) che si vuole utilizzare.
Ad esempio, se si vuole conoscere la home dell'utente root da un browser in rete si richiama la seguente pagina:

http://192.168.0.64/nusoap/clientsoap01.php?nuser=root&how=HOME


Il risultato e' il seguente:

Il dato HOME richiesto per l'utente root ha prodotto il seguente risultato:
/root

 
DOCUMENTI CORRELATI
APACHE-SSL + WEB SERVICES PHP-PERL + CONNESSIONE MSSQL7-2000: INSTALLAZIONE
PHP & NUSOAP: CLIENT VISUAL BASIC 6
RIFERIMENTI
www.apache.org
www.php.net
dietrich.ganx4.com/nusoap/
www.w3.org/TR/SOAP/
CAMBIAMENTI
--. 23 aprile 2003 18:00: creazione documento
 
 
 redazione@retelinux.com