Ciao a tutti,
Vorrei impostare un file di log che registri gli errori PHP per il mio sito web. Leggendo il manuale ufficiale PHP e nello specifico http://www.php.net/manual/en/errorfu...ini.log-errors , e varie guide online, ho visto che la priorità viene data rispettivamente in quest'ordine:
1) alle direttive impostate tramite file php.ini - che ha la priorità massima, poi
2) alle direttive impostate nel virtual host, cioè agendo sul file httpd.conf
3) alle direttive impostate tramite il file .htaccess ed infine
4) solo successivamente alle direttive impostate "runtime" tramite un file php che utilizza le funzioni error_reporting() e ini_set(). File che andrà inserito poi in tutte le pagine web che si desidera.
Ora mi sono creato un semplice file di testo vuoto che ho chiamato error_log2 poi l'ho caricato via FTP come tutte le pagine web che creo, sul mio sito che ho su altervista.org, ed infine mi sono creato un file php, err_produ.php, che includo in una mia pagina online per provare, in questo modo:
<?php
include 'err_produ.php;
?>
Con questo script err_produ.php vorrei memorizzare tutti gli errori, MA NON MOSTRARLI A VIDEO OVVIAMENTE, come faccio con XAMPP in locale, ovvero in fase di sviluppo, ed invece registrarli sul file di cui sopra.
Ora accedendo al mio sito da altervista, vedo che sul file di testo error_log2 NON viene scritto un bel nulla! quando commetto un errore intenzionalmente sulla pagina online indicata sopra.
Per sicurezza ho settato i permessi in error_log2 in chmod 0777 via FTP, per essere sicuro che tale file risulti scrivibile, ma non va lo stesso...
Ecco lo script err_produ.php :
Codice PHP:
<?php
/*
This is for PRODUCTION.
I report all PHP errors (see changelog) but show nothing on the screen: I use the error_log file instead.
The default value set in php.ini is E_ALL & ~E_NOTICE or E_ALL ^ E_NOTICE, which is exactly the same.
That setting does not show E_NOTICE level errors.
You may want to show them during development.
*/
error_reporting(E_ALL);
ini_set('display_errors', 'off');
ini_set('display_startup_errors', 0);
ini_set('log_errors', 1);
ini_set('log_errors_max_len', 0);
ini_set('ignore_repeated_errors', 1);
ini_set('ignore_repeated_source', 1);
ini_set('report_memleaks', 1);
ini_set('track_errors', 1);
ini_set('error_log', './error_log2');
?>
Stranamente in locale tutto è ok, mentre, come ho detto sopra, online continuo a vedere a video tutti gli errori (ad es. un semplice Notice come una variabile non inizializzata) e non viene scritto nulla sul file error_log2.
Grazie in anticipo.
Ciao