[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Gazie,(1) ovvero Gestione azienda, è un programma scritto in PHP, per la gestione di una contabilità, appoggiandosi a una base di dati MySQL.
Questo capitolo mostra in che modo mettere in funzione Gazie, versione 1.1.10, che in questa fase consente la gestione di una sola azienda, anche se con la partecipazione di più persone, con la possibilità per ognuna di definire le funzioni accessibili.
Gazie dipende dalla disponibilità di un servente HTTP, in grado di fare funzionare pagine contenenti codice PHP. Per verificare questa cosa si può realizzare un file molto semplice, da collocare dove il servente HTTP può poi mostrarlo:
|
Supponendo di avere chiamato questo file prova.php
e di averlo collocato nella directory che corrisponde all'inizio della struttura offerta dal proprio servente HTTP, dovrebbe essere accessibile con l'indirizzo http://localhost/prova.php
(naturalmente si suppone che il servente HTTP si trovi presso l'elaboratore locale). Se tutto funziona regolarmente si deve poter vedere una pagina di informazioni.
Per utilizzare Gazie è bene predisporre MySQL con una base di dati (di solito con il nome gazie) e un utente per il suo utilizzo (anche questo utente potrebbe avere il nome gazie).
Prima di poter fare questo è necessario che MySQL sia stato configurato in modo da poter funzionare. Questo significa che deve essere presente la base di dati amministrativa (mysql) e l'amministratore del DBMS (l'utente root) in grado di accedere (eventualmente si può consultare il capitolo 499 per vedere come allestire il servizio; nello stesso capitolo è spiegato anche come attribuire una parola d'ordine all'utente root del DBMS quando quella vecchia è stata dimenticata).
Per creare la base di dati, si può procedere nel modo seguente, supponendo che il servente MySQL sia locale:
$
mysql -u root -p
[Invio]
Enter password:
digitazione_all'oscuro
[Invio]
mysql>
CREATE DATABASE gazie;
[Invio]
Per creare l'utente gazie per il DBMS, si procede semplicemente così:
mysql>
GRANT ALL ON gazie.* TO gazie@'%'
\
\IDENTIFIED BY 'segreta' WITH GRANT OPTION;
[Invio]
In questo modo, l'utente gazie può accedere da qualunque posizione; la parola d'ordine per il suo riconoscimento è segreta e può concedere dei privilegi ad altri utenti.
mysql>
\q
[Invio]
Una volta creato l'utente e la base di dati, è necessario inserire le tabelle di esempio fornite in forma di codice SQL. Si tratta di un file di testo che nel pacchetto originale di Gazie si trova nella directory doc/
; nel caso della versione 1.1.10 è precisamente il file doc/gazie_prova_1.1.10.sql
. Supponendo di disporre di questo file nella directory corrente, si procede nel modo seguente:
$
mysql -u gazie -p gazie < gazie_prova_1.1.10.sql
[Invio]
Enter password:
digitazione_all'oscuro
[Invio]
In questo modo si avvia il programma mysql, in qualità di utente gazie per il DBMS, aprendo la base di dati gazie, fornendo i comandi contenuti nel file. Al termine dell'esecuzione dei comandi mysql termina di funzionare.
Gazie è un programma eseguito attraverso PHP, pertanto è indipendente dalla piattaforma, anche se è sviluppato tenendo come riferimento il servente HTTP Apache. Si può ottenere il pacchetto di Gazie da <http://gazie.sourceforge.net/>; nel caso della versione 1.1.10 si tratta del file gazie1.1.10.zip
. Questo file va estratto nella directory che il servente HTTP mostra poi come directory principale; supponendo che nel file system questa sia /var/www/
, si potrebbe procedere così:
#
cd /var/www
[Invio]
#
unzip /root/gazie1.1.10.zip
[Invio]
In questo caso si ottiene la directory gazie10/
che, attraverso un navigatore, può essere vista come http://localhost/gazie10/
.
Prima di passare all'utilizzo del programma, è necessario modificare un file, per stabilire dove Gazie deve cercare la base di dati, che nominativo-utente e quale parola d'ordine deve usare per potervi accedere. Il file in questione è inc/config.php
; segue l'estratto delle righe significative su cui intervenire, che appare conforme a quanto già descritto nelle sezioni precedenti: la base di dati è locale, si chiama gazie, come il nominativo dell'utente da usare, ma è necessario dichiarare anche la parola d'ordine.
|
È importante osservare che la parola d'ordine per accedere alla base di dati appare in chiaro in questo file, inoltre il file deve essere accessibile in lettura al servente HTTP (oltre che ai programmi CGI, ammesso che ci sia differenza).
Nella sezione precedente appare la porzione saliente della configurazione di Gazie per l'accesso alla base di dati. Prima di tentare la verifica di funzionamento di Gazie, è bene controllare che la base di dati, secondo quei parametri di configurazione, sia accessibile effettivamente. Per esempio, l'utente gazie del DBMS potrebbe essere stato dichiarato con delle limitazioni; precisamente potrebbe essergli consentito di accedere soltanto dall'elaboratore locale (cosa che sarebbe anche consigliabile). Ma in tal caso, indicare l'elaboratore come localhost (come nell'esempio della sezione precedente), oppure 127.0.0.1, non è necessariamente la stessa cosa e in uno dei due modi potrebbe non essere possibile l'accesso.
Per togliersi ogni dubbio, meglio preparare un piccolo programma PHP che verifica l'accessibilità:
|
Supponendo di chiamare questo file test.php
, se viene collocato nella directory principale offerta dal servente HTTP, dovrebbe essere raggiunto con l'indirizzo http://localhost/test.php
e il messaggio che viene visualizzato dovrebbe essere abbastanza esplicito.
Una volta installato Gazie, dopo aver controllato che tutto quello che gli serve funzioni come dovrebbe, si utilizza il navigatore per accedere al file admin.php
. Seguendo gli esempi già mostrati, l'indirizzo dovrebbe essere http://localhost/gazie10/admin.php
.
Da questo punto il navigatore deve essere in grado di gestire e accettare i «biscottini» (cookie); inoltre deve eseguire codice JavaScript. |
La pagina iniziale richiede l'inserimento di un nominativo e di una parola d'ordine. Si tratta di un utente specifico di Gazie, secondo quanto memorizzato nelle tabelle della sua base di dati.
|
Se la base di dati è stata ottenuta dal file di esempio, contenente codice SQL, come già descritto in un'altra sezione di questo capitolo, è presente l'utente amministratore, con la parola d'ordine password (esattamente come viene suggerito dalle voci tra parentesi, come si vede nella figura). Ovviamente, in una fase successiva, oltre ad aggiungere altri utenti, regolando le loro facoltà, conviene cambiare la parola d'ordine dell'utente di amministrazione, oltre che i suoi dati personali.
|
Una volta superata la fase di autenticazione, si ottiene normalmente la pagina principale, che altrimenti si raggiunge selezionando la voce {Home
} dal menù che appare in alto.
|
Successivamente, le schede più importanti da predisporre o da modificare, sono accessibili dalla voce {Archivi di base
} del menù. Si ottiene una guida per la compilazione dei vari campi, quindi si può selezionare la tabella di proprio interesse per passare alla sua modifica. Si osservi che la voce attraverso cui si interviene sulle utenze di Gazie è {Utenti
}.
Generalmente si dà per scontato che «il» servente HTTP sia Apache e non se ne considerano altri. Purtroppo, con Mathopd e forse con altri serventi veloci, ma essenziali, si crea un problema, dovuto a riferimenti interni al programma che sono inesatti.
In pratica, il file admin.php
incorpora o richiama altri file, che a loro volta ne richiamano altri. Questo meccanismo di incorporazione o di richiamo dei vari file PHP, o dei fogli di stile, o di icone, o di altro ancora, può fallire. Ecco il genere di errori che si potrebbe ottenere:
|
La ragione di questo problema deriva dal fatto che il servente HTTP non fornisce valori appropriati per quello che nel linguaggio PHP può essere letto come $_SERVER['DOCUMENT_ROOT'].
Per risolvere il problema dei riferimenti interni, tra i vari file di Gazie, bisogna intervenire pesantemente, stravolgendo la struttura del programma. Semplificando, i file che contengono codice PHP vanno spostati nella directory principale di Gazie, lasciando nelle sottodirectory la documentazione, le immagini, il codice JavaScript e i fogli di stile.
Qui viene mostrato come procedere per la versione 1.1.10. Inizialmente, la struttura di directory di Gazie è questa:
|
Dopo lo spostamento dei file PHP nella directory principale, le directory vuote vengono eliminate e la nuova struttura diventa quella seguente:
|
Si può osservare la comparsa della directory font/
, che prima era contenuta in inc/
, ora soppressa. Si osservi anche che tra i file contenuti nelle sottodirectory di modules/
, possono esserci dei doppioni; in tal caso occorre verificare e decidere cosa scegliere.
Una volta fatta la ristrutturazione delle directory, occorre modificare quasi tutti i file che ora si trovano nella directory principale. Vengono mostrati degli esempi di modifiche da apportare, mettendo vicino ogni riga da cambiare con la propria riga modificata, per avere un'idea di ciò che si deve cercare:
|
|
|
|
|
|
|
|
|
|
Anche nella base di dati ci sono riferimenti a file PHP, pertanto anche lì occorre intervenire. In pratica, si modifica il sorgente SQL usato per creare le tabelle iniziali della base di dati. Ecco le righe originali da modificare, ridotte sulla destra per motivi tipografici:
|
Ecco le stesse righe modificate:
|
La modifica del file SQL è semplice, mentre quella dei file PHP è estremamente noiosa. Uno script potrebbe essere di aiuto. Quello che segue va eseguito essendo posizionati nella directory principale di Gazie, dopo l'estrazione dal suo archivio e risulta funzionante per la versione 1.1.10:
|
Purtroppo, i file PHP di Name hanno codici di interruzione di riga variegati: a volte viene usata la combinazione <CR><LF>; a volte solo <CR> e a volte solo <LF>. Lavorando con un sistema GNU, che di solito richiede che il codice sia <LF> soltanto, prima di trasformare i file, occorre uniformare il codici di interruzione di riga, come si vede nella funzione replace script, anche se la soluzione adottata non funziona molto bene:
|
Se si riesce nella trasformazione descritta nella sezione precedente, Gazie può essere installato nella directory personale di ogni singolo utente, in modo da poter distinguere così, per ognuno, una propria base di dati.
Purtroppo, rimane il problema della parola d'ordine per accedere alla base di dati, che va scritta in chiaro nel file |
Gli utenti, di solito, possono gestire le proprie pagine personali a partire dalla directory ~/public_html/
; per usare Gazie da una sottodirectory di quella, è necessario che il servente HTTP ammetta l'esecuzione di programmi PHP dalle pagine personali degli utenti.
Fatto questo, occorre accertare con quali privilegi il servente HTTP accede ai file, ma soprattutto, quali privilegi vengono usati per eseguire i programmi CGI. Potrebbe trattarsi di un utente del tipo www-data o www-cgi. Sapendo questo, l'utente root può attribuire la proprietà del file config.php
a quell'utente, togliendo i permessi di accesso al gruppo e agli altri utenti.
Quella descritta è la soluzione adottata nella distribuzione nanoLinux, ma bisogna considerare che in quel caso, è lo stesso sistema di creazione delle utenze a predisporre la base di dati, ma soprattutto il file config.php
con i dati necessari, inclusa la parola d'ordine.
Antonio De Vincentiis, Home page
GAZIE
AD. D. Software, GAL, Gestione aziendale libera
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome gazie.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]