La funzione mkdir di PHP restituisce solo true e false. Il problema è quando restituisce false.Come trovare un motivo quando l'mkdir non riesce da PHP?
Se sono in esecuzione con segnalazione errori abilitata, viene visualizzato il messaggio di errore sullo schermo. Posso anche vedere il messaggio di errore nel registro di Apache. Ma mi piacerebbe prendere il testo del messaggio e fare qualcos'altro con esso (ad esempio, inviare a me stesso tramite IM). Come ottengo il testo dell'errore?
Aggiornamento: Seguendo l'idea di Ayman, sono venuto a questo:
function error_handler($errno, $errstr) {
global $last_error;
$last_error = $errstr;
}
set_error_handler('error_handler');
if (!mkdir('/somedir'))
echo "MKDIR failed, reason: $last_error\n";
restore_error_handler();
Tuttavia, non mi piace perché usa variabile globale. Qualche idea per una soluzione più pulita?
risposta di Soulmerge è una scelta migliore perché ti dice l'errore senza sostituire il gestore. –
Nota che i gestori degli errori sono memorizzati in una pila in PHP, il che significa che la chiamata a restore_error_handler() ripristinerà il precedente gestore degli errori, sia che si tratti del gestore integrato o di un altro gestore personalizzato. Quindi non c'è alcuna perdita nella sostituzione temporanea del gestore degli errori con set_error_handler(). – soulmerge