Questa pillola vuole aiutare tutti quelli che hanno problemi a causa della configurazione del server apache di chi li hosta!
Ovviamente non sarà possibile risolvere TUTTI i problemi ma tanti si
***Cosa sono i .htaccess***
I .htaccess sono dei file che contengono DIRETTIVE di apache. Di default hanno il punto davanti per essere invisibili tramite FTP e apache, sempre di default, blocca, ovviamente, il loro download.
Si possono usare per svariate cose essendo che contengono le direttive! Possono essere usati per potreggere le dir con user e pass, possono essere usati per bloccare l'accesso e tra le tante cose possono essere usati per impostare alcuni parametri di php!
Principalmente sono utilizzati su linux, anche perché apache non è usato sui sistemi windows. Comunque se doveste fare delle prove sotto win ricordatevi di cambiare il nome di questi file da .htaccess a htaccess.txt in modo da poterli utilizzare sotto windows
Inoltre dovete modificare, all'interno dei TAG Directory o Location, la direttiva AllowOverride impostandola su ALL e non su NONE o altro. Infatti questa dice ad apache dove è possibile usare i .htaccess! Per modificare il nome dei .htaccess in htaccess.txt dovete cercare la riga
codice:
AccessFileName .htaccess
e cambiarla in
codice:
AccessFileName htaccess.txt
Inoltre dovete anche cambiare
codice:
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
in
codice:
<Files ~ "^ht(access|passwd)\.txt$">
Order allow,deny
Deny from all
Satisfy All
</Files>
In modo che i file di nome htaccess.txt e htpasswd.txt non siano scaricabili tramite internet! Ovviamente se usate l'autenticazione tramite user e pass di apache ricordatevi di usare come nome di file delle password htpasswd.txt altrimenti sarà possibile scaricare le vostre password
***PHP e .htaccess***
Come abbiamo detto i file .htaccess sono creati per contenere direttive di apache e sono usati per dire ad apache di applicare quelle direttive alla cartella\file in cui si trova il file .htaccess e a tutte le sotto cartelle e relativi file delle sotto cartelle di quella cartella!
In pratica se abbiamo una dir fatta cosi
codice:
root\
|---img
| |---admin
| |---user
|---src
|---log
e mettiamo il file dentro root, apache applicherà il contenuto di root anche a img, admin, user, src e log!
Le direttive di apache usati per impostare i settaggi di php sono
codice:
php_flag
php_value
Come credo risulti evidente dai nomi, php_flag è usato per impostare a TRUE o FALSE quei settaggi dove è richiesto un valore che specifichi se abilitare o meno quella specifica opzione, mentre php_value e usato in tutti gli altri casi per impostare nelle opzioni di php i valori dei vari parametri che possono essere lettere o numeri o altro ancora!
Un'esempio di utilizzo è questo
codice:
php_flag "register_global" "0"
php_value "upload_max_filesize" "4M"
Potete trovare l'elenco completo dei settaggi che si possono modificare all'indirizzo:
http://it2.php.net/ini_set
php_flag può avere valori 0, ovvero FALSE, 1, ovvero TRUE
php_value deve avere valori attinenti al settaggio che sei vuole cambiare
I settaggi si dividono in 4 gruppi:
codice:
PHP_INI_USER L'impostazione può essere settata negli script dell'utente tramite ini_set
PHP_INI_PERDIR L'impostazione può essere settata nel php.ini, nell'.htaccess ed infine nel file di configurazione di apache httpd.conf
PHP_INI_SYSTEM L'impostazione può essere settata soltanto nel php.ini e nell'httpd.conf
PHP_INI_ALL L'impostazione può essere settata ovunque (quindi tramite ini_set, php.ini, .htaccess e httpd.conf)
Qui di seguito riporto tutti i vari campi utili, con relativa descrizione dei settaggi che possonoe essere modificati tramite .htaccess
Il primo campo è il nome della variabile, il secondo è il valore di default, il terzo con cosa deve essere usato ed infine il quarto contiene la descrizione
codice:
---===[ VARIABILI SESSIONI ]===---
session.save_path "/tmp" VALUE Specifica dove i file che conterranno le sessioni saranno salvate
session.name "PHPSESSID" VALUE Specifica il nome del cookie, o del parametro get che conterra l'id di sessione
session.save_handler "files" VALUE Speficica l'handler per la gestione delle sessioni
session.auto_start "0" FLAG Indica se la sessione deve partire automaticamente all'avvio
session.gc_probability "1" VALUE La probabilità, da 1 a DIVISOR, di esecuzione della Garbage Collection delle Sessioni
session.gc_divisor "100" VALUE Contiene il massimo numero tramite il quale calcolare se eseguire la GC o meno
session.gc_maxlifetime "1440" VALUE Durata della sessione dall'ultima azione
session.serialize_handler "php" VALUE Handler per gestire la serializzazione
session.cookie_lifetime "0" VALUE Durata del cookie
session.cookie_path "/" VALUE Path del cookie
session.cookie_domain "" VALUE Dominio del cookie
session.cookie_secure "" FLAG Se il cookie è per HTTPS o no
session.use_cookies "1" FLAG Se può usare i cookie
session.use_only_cookies "0" FLAG Se può usare SOLO i cookie
session.referer_check "" VALUE Se deve controllare il referer
session.use_trans_sid "0" FLAG ???
---===[ VARIABILI PER L'OUTPUT ]===---
output_handler NULL VALUE Specifica a quale funzione passare i dati da inviare a video
---===[ VARIABILI PER L'OUTPUT COMPRESSO ]===---
Le variabili qui riportate servono a impostare se php deve inviare il contenuto sotto forma di GZIP per risparmiare banda o meno
zlib.output_compression "0" FLAG Specifica se abilitare o meno la compressione GZIP
zlib.output_compression_level "-1" VALUE Specifica il livello di compressione da 1 a 9
---===[ VARIABILI PER L'HIGHLIGHT DEL CODICE PHP ]===---
Le variabili qui riportate servono a modificare i colori usati dai comandi php per fare l'highlight
highlight.bg HL_BG_COLOR VALUE Colore dello sfondo
highlight.comment HL_COMMENT_COLOR VALUE Colore dei commenti
highlight.default HL_DEFAULT_COLOR VALUE Colore di default
highlight.html HL_HTML_COLOR VALUE Colore dell'html
highlight.keyword HL_KEYWORD_COLOR VALUE Colore delle parole chiavi
highlight.string HL_STRING_COLOR VALUE Colore delle stringhe
---===[ VARIABILI PER IL MAGIC QUOTE ]===---
magic_quotes_gpc "1" FLAG Se deve backslashare i dati provenienti dal GET, dal POST e dai COOKIE
magic_quotes_runtime "0" FLAG Se deve backslashare in automatico i dati durante l'esecuzione del codice
magic_quotes_sybase "0" FLAG Se deve backslashare i dati stile SyBase
---===[ VARIABILI PER IL REGISTER GLOBAL ]===---
register_globals "0" FLAG Se deve utilizzare il register global
---===[ VARIABILI PER IL AGGIUNTA DEI FILE ]===---
auto_append_file NULL VALUE Nome del file da far accodare all'esecuzione dello script
auto_prepend_file NULL VALUE Nome del file da far precedere all'esecuzione dello script
---===[ VARIABILI PER IL TEMPO DI ESECUZIONE ]===---
max_execution_time "30" VALUE Durata massima dell'esecuzione dello script
max_input_time "60" VALUE Durata massima dell'acquisizione dei dati dal browser
---===[ VARIABILI PER IL MAGIC QUOTE ]===---
upload_max_filesize "2M" VALUE Massima dimensione dei file da uploadare
post_max_size "8M" VALUE Massima dimensione dei dati post possibile da ricevere
---===[ VARIABILI PER IL MAGIC QUOTE ]===---
memory_limit "8M" VALUE Limite di memoria massimo da consumare - ALZARE SOLO SE STRETTAMENTE NECESSARIO!!!
---===[ VARIABILI PER IL MAGIC QUOTE ]===---
allow_url_fopen "1" VALUE Permette di utilizzare in fopen, file, file_get_contents e simili i wrapper per gli url
---===[ VARIABILI PER IL MAGIC QUOTE ]===---
engine "1" VALUE Abilita o disabilita il motore php
Io vi consiglio di avere SEMPRE un file .htaccess di questo tipo
codice:
php_flag "magic_quotes_gpc" "1"
php_flag "magic_quotes_runtime" "0"
php_flag "register_globals" "0"
php_flag "allow_url_fopen" "0"
perché questi settaggi possono salvarvi da TANTI possibili exploit creati per mancanza di conoscenza o disattenzione
Li si abilita di default il magic quotes e si disabilita quello durante l'esecuzione, dopo di che si disabilita il register global xche è MOLTO pericoloso ed infine disabilita i wrapper degli url nelle funzioni della gestione dei file. Ovviametne impostateli cosi se non avete problemi di altro tipo
Per vedere se sono abilitati o meno mettete un phpinfo.php, che contenga
codice:
<?php
phpinfo();
?>
e visualizzatelo!
Cercate il parametro li dentro e controllate la colonna Local Value, non la Master Value, xche la master value indica il settaggio generale
spero di esservi stato d'aiuto!
ciaooooooooooo
PS: scusate per il mega tag code