Archive for the ‘Programmazione’ Category

PHP: settare include_path attraverso il .htaccess

Ho deciso di inserire nel blog alcuni articoli tecnici. Soluzioni a problemi che ho affrontato in precedenza e che hanno poco risalto nei siti italiani.

Come tutti sanno il php è un po’ rognoso per quanto riguarda il sistema di inclusione delle pagine, dovuto soprattutto al fatto che nell’utilizzare path relativi questi usino come directory di partenza la posizione del primo file chiamante.

Per risolvere questo problema allora ci viene incontro l’include_path. Questo è configurabile in vari modi, attraverso il php.ini, utilizzando la funzione ini_set o attraverso il .htaccess.

La prima è una modifica globale che intacca tutti i sitiweb che utilizzano il php.

La seconda è un’istruzione che deve essere inserita in ogni file in cui è necessario impostare l’include_path.

La terza invece è un’impostazione del singolo sito.

Cosa occorre fare per impostare l’include_path attraverso il file .htaccess

  1. Aprire il file httpd.conf, andare nella sezione riguardante la configurazione del sito su cui si sta lavorando e modificare (o inserire) l’opzione AllowOverride impostando il valore Options —> AllowOverride Options
  2. Creare nella root del sito il file .htaccess (è proprio scritto così che si deve chiamare “.htaccess”)
  3. Inserire quanto segue:
    <IfModule mod_php5.c>
                 php_value include_path “/www/website/myIncludesDirectory:.:/bin/php5/lib/php”
    </IfModule>

Come potete vedere il valore impostato per include_path contiene ben tre percorsi, il primo  “/www/website/myIncludesDirectory” si riferisce alla libreria che io voglio creare per il sito, la seconda “.” è come si può ben capire la directory corrente ed infine la terza “/bin/php5/lib/php” è l’ipotetica directory di dafault del php.

Attraverso questa impostazione ogni volta che vi sarà un include in un file php, l’interprete seguirà l’ordine precedentemente detto per trovare il file incluso. Ovviamnte l’IfModule abilita questa opzione nel caso di php5, se si inserisce una istruzione per il php4 si può impostare una libreria diversa in base alla versione di php installata sul server.

Una precisazione finale, se includo un file presente nella stessa directory del file chiamante (es: include(“file.php”);) l’interprete non utilizza l’include_path ma cerca il file direttamente nella stesa directory.

Spero che questo articolo possa far risparmiare tempo a qualcuno.

    VN:F [1.9.3_1094]
    Rating: 9.0/10 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)