ciao
scusa ma vorrei provare a leggere il manuale php con te (solo ini_set),
pensando al sito in "produzione"
-----
error_reporting(E_ALL);
-----
ini_set("display_errors", 1);
This determines whether errors should be printed to the screen as part of the output
or if they should be hidden from the user.
sono dell'idea che l'utente del sito non debba vedere i possibili errori (FALSE),
ma, dopo la loro intercettazione, devono essere adeguatamente gestiti,
quando un errore è incorreggibile,
mi scuso con l'utente, avverto l'amministratore in qualche modo ed interrompo l'esecuzione
-----
ini_set("display_startup_errors", 1);
Even when display_errors is on, errors that occur during PHP's startup sequence are not displayed.
It's strongly recommended to keep display_startup_errors off, except for debugging.
mi rimetto al manuale e, fermamente, accetto la sua raccomandazione
-----
ini_set("track_errors", 1);
If enabled, the last error message will always be present in the variable $php_errormsg.
non credo sia importante, di solito gli errori che si verificano "in produzione" devono essere immediatamente gestiti,
vedi errori "provenienti" dal db, ma dipende da come sono sviluppati gli script
-----
ini_set("log_errors", 1);
Tells whether script error messages should be logged to the server's error log or error_log.
This option is thus server-specific.
ok (true) per avere il log in un proprio file e non in quello di sistema
-----
ini_set("error_log", __DIR__ . "/log/my_log.log");
Name of the file where script errors should be logged.
The file should be writable by the web server's user. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ho aggiunto io i punti esclamativi, per evidenziare che,
non solo il file deve essere "writable by the web server's user" ma lo deve essere anche la "dir" che lo contiene ovvero "log"
e dal poco che conosco, lo devono essere anche tutte le "dir" che stanno sopra alla "log"
ovvero, per cominciare, la "dir" che contiene gli script da eseguire
perchè é li che é allocata la "log"
tutto ciò non è proprio in favore della sicurezza del server, tutte le "dir" del sito web sono alla mercè dei "web server's user"
meglio creare una "dir" a se stante, che non interagisca con le "dir" del sito web
(730 precompilato non fa testo, php non gestiva un sito web, ma di fatto era un ftp per trasferire un file
per questa ragione il log era posizionato nella stessa "dir" degli script)
If the special value syslog is used, the errors are sent to the system logger instead.
On Unix, this means syslog(3) and on Windows NT it means the event log.
The system logger is not supported on Windows 95.
See also: syslog(). If this directive is not set, errors are sent to the SAPI error logger.
For example, it is an error log in Apache or stderr in CLI. See also error_log().
-----
ini_set("log_errors_max_len", 0);
Set the maximum length of log_errors in bytes. In error_log information about the source is added.
The default is 1024 and 0 allows to not apply any maximum length at all.
This length is applied to logged errors, displayed errors and also to $php_errormsg, but not to explicitly called functions such as error_log()().
non l'ho mai utilizzato per evitare di perdere dei messaggi, se non ho la possibilità di leggere con frequenza i log
-----
ritorno alla soluzione per me migliore,
PHP:
ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', FALSE);
ini_set('log_errors', TRUE);
ini_set('error_log', 'C:/Temp/_mySiteErrors.log');
-----
perchè non funziona, quanto hai proposto ?
1 - vedi i permessi "writable"
2 - assicurati che venga incluso il file che contiene i tuoi ini_set, metti un "echo" come prima linea
3 - non ho in mente altro (poche idee ....)
ciao
Marino