This is an old revision of the document!
Table of Contents
Note programmazione PHP
PHPSESSIONID
Quando si usano le sessioni il PHP riscrive gli URL relativi, aggiungendo la variabile PHPSESSIONID
. Questo è un meccanismo di sicurezza per tentare di far funzionare le sessioni nel caso che i cookie siano disabilitati. Se siamo sicuri che le sessioni funzionano tramite cookie e non vogliamo che gli URL vengano “sporcati”, si possono impostare alcune opzioni nel file di configurazione di apache, in php.ini
oppure nel codice PHP subito prima della funzione session_start()
:
# Those settings should double-assure that relative URLs # will not be rewritten with ?PHPSESSID= added. ini_set('url_rewriter.tags', ''); ini_set('session.use_trans_sid', false);
Scrivere gli URL
Dovendo generare un URL cliccabile:
$url = 'page?'; $url .= 'param=' . urlencode($value); echo '<a html="' . $url . '">';
Come si deve eventualmente codificare page e param dell'esempio precedente se contenessero caratteri strani?
Moduli PEAR non pacchettizzati
Volendo installare il pacchetto Pear MDB2 con il dirver PostgreSQL e il pacchetto Pear Auth: installato il pacchetto Ubuntu php-pear, i pacchetti aggiuntivi sono stati scaricati direttamente dal repository Pear, perché non presenti in Ubuntu (nota: in Debian invece esiste almeno il pacchetto php-auth):
pear install MDB2 pear install MDB2#pgsql pear install -f OLE pear install -f Spreadsheet_Excel_Writer pear install Auth
L'opzione -f forza l'installazione anche in caso di versioni beta, ecc. I pacchetti Pear vengono salvati in /usr/share/php/
.
Personalizzare php.ini in esecuzione cgi-bin
Se il PHP viene eseguito come CGI oppure come FastCGI le impostazioni tradizionali di php.ini oppure del VirtualHost di Apache non sono prese in considerazione.
Una soluzione è quella di creare un wrapper che faccia puntare ad una directory con il php.ini
personalizzato ed eventualmente settare le necessarie variabili di ambiente.
Ecco un esempio per impostare la Default timezone e la date.timezone, si crea un file php-fcgi-wrapper
:
#!/bin/sh PHPRC="/var/www/customer1/php-cgi/" export PHPRC PHP_DOCUMENT_ROOT="/var/www/customer1/www" export PHP_DOCUMENT_ROOT export TZ=Europe/Rome exec /usr/bin/php-cgi $1
e quindi nel VirtualHost di Apache si attiva il wrapper con qualcosa del genere:
</Directory> <Directory /var/www/customer1/www> AddHandler fcgid-script .php .php3 .php4 .php5 FCGIWrapper /var/www/customer1/php-cgi/php-fcgi-wrapper .php Options +ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>