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