La función mkdir de PHP solo devuelve verdadero y falso. El problema es cuando devuelve falso.¿Cómo encontrar un motivo cuando mkdir falla en PHP?
Si estoy ejecutando informes de errores habilitados, veo el mensaje de error en la pantalla. También puedo ver el mensaje de error en el registro de Apache. Pero me gustaría tomar el texto del mensaje y hacer algo más con él (por ejemplo, enviarlo por mensajería instantánea). ¿Cómo obtengo el texto de error?
Actualización: Siguiendo la idea de Ayman, llegué a esto:
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();
Sin embargo, no me gusta porque utiliza variable global. ¿Alguna idea para una solución más limpia?
respuesta de Soulmerge es una mejor opción porque le informa sobre el error sin reemplazar el controlador. –
Tenga en cuenta que los controladores de errores se almacenan en una pila en PHP, lo que significa que la llamada a restore_error_handler() restaurará el controlador de errores anterior, ya sea el controlador incorporado u otro controlador personalizado. Por lo tanto, no hay pérdida en el reemplazo temporal del controlador de errores con set_error_handler(). – soulmerge