¿Cómo puedo registrar este error en un archivo de texto o base de datos?PHP: ¿Cómo registrar errores fatales?
Fatal error: Call to undefined method PROJECTS::ssss()
¿Cómo puedo registrar este error en un archivo de texto o base de datos?PHP: ¿Cómo registrar errores fatales?
Fatal error: Call to undefined method PROJECTS::ssss()
Se no es posible para controlar los errores fatales utilizando un controlador de errores personalizado.
La mejor solución es simplemente habilitar el registro de errores (por ejemplo, para syslog) en su php.ini y luego usar una herramienta como logcheck/logsentry para recibir correos electrónicos regulares sobre entradas inusuales de syslog.
En lugar de syslog PHP también puede registrar errores en un archivo, simplemente eche un vistazo a las opciones de registro de errores de php.ini.
log_errors = On
error_log = syslog
error_log = /path/to/some/folder/phperrors.log
Obviamente sólo desea utilizar una de las líneas error_log
.
Algo así como:
if(!method_exists($obj, 'method')){
$db->log('What you want to log'); //log in your DB
error_log('message');//Write to php's error log
}
que tienen un controlador de errores de manejo de mi error, pero un error como el anterior, no podía manejar ellos o log. – Hamidreza
Ugh, estoy bastante seguro de que quiere una solución genérica. – ThiefMaster
No sé dónde ocurre este error. Necesito registrar todo tipo de error – Hamidreza
usted podría tener toda su base
clases pertenecen a una super-clase que utiliza method overloading:
class Base
{
public function __call($name)
{
MyLog::logError(...);
trigger_error("Function ".get_class($this)."::$name doesn't exist",
E_USER_ERROR);
}
}
Los intentos de invocar métodos no-existentes de clases derivadas de Base
serían en última instancia manejados por Base::__call()
. Para los métodos estáticos, en consecuencia, está __callStatic()
(a partir de PHP 5.3).
Hay una manera de hacer frente a su tarea y en realidad PUEDE establecer un controlador de error personalizado en los errores FATAL.
Puede hacerlo de esta manera:
ini_set('error_reporting', E_ERROR);
register_shutdown_function("fatal_handler");
function fatal_handler() {
$error = error_get_last();
//Do whatever you want with this error, for example:
YourDBApplicationLayer::writeFatal($error);
}
ahora su posible en PHP7
try {
ggggg(); // <---- make fatal error
}catch(Error $e){
var_dump($e);
}
¿cómo puedo habilitar el registro de errores en php.ini? – Hamidreza
Debería poder manejar un error fatal con register_shutdown_function() –
@ SebastiánGrignoli: no hay una forma clara de detectar si hubo un error en esa función. – ThiefMaster