Как я могу зарегистрировать эту ошибку в текстовом файле или базе данных?PHP: Как регистрировать фатальные ошибки?
Fatal error: Call to undefined method PROJECTS::ssss()
Как я могу зарегистрировать эту ошибку в текстовом файле или базе данных?PHP: Как регистрировать фатальные ошибки?
Fatal error: Call to undefined method PROJECTS::ssss()
Это не возможно обрабатывать фатальные ошибки с помощью обработчика ошибок.
Лучшее решение - просто включить ведение журнала ошибок (например, в syslog) в php.ini, а затем с помощью инструмента, такого как logcheck/logsentry, для получения регулярных сообщений о необычных записях syslog.
Вместо syslog PHP также может регистрировать ошибки в файле - просто просмотрите параметры регистрации ошибок php.ini.
log_errors = On
error_log = syslog
error_log = /path/to/some/folder/phperrors.log
Очевидно, что вы хотите использовать только одну из error_log
линий.
Что-то вроде:
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
}
У меня есть обработчик ошибок для обработки мою ошибку, но некоторые ошибки как выше, я не мог справиться их или журнала. – Hamidreza
Ух, я уверен, что он хочет получить общее решение. – ThiefMaster
Я не знаю, где эта ошибка. Мне нужно регистрировать все ошибки типа – Hamidreza
Вы можете иметь всю вашу
базы
классов принадлежат к супер-классу с использованием method overloading:
class Base
{
public function __call($name)
{
MyLog::logError(...);
trigger_error("Function ".get_class($this)."::$name doesn't exist",
E_USER_ERROR);
}
}
Попыток взывают несуществующие методы классов, производные от Base
будут в конечном счете, обрабатываемые Base::__call()
. Для статических методов, соответственно, есть __callStatic()
(начиная с PHP 5.3).
Существует способ справиться с вашей задачей, и на самом деле вы можете установить собственный обработчик ошибок при ошибках FATAL.
Вы можете сделать это следующим образом:
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);
}
теперь его в PHP7 возможно
try {
ggggg(); // <---- make fatal error
}catch(Error $e){
var_dump($e);
}
как я могу включить журнал ошибок в php.ini? – Hamidreza
Вы должны иметь возможность обрабатывать фатальную ошибку с помощью register_shutdown_function() –
@ SebastiánGrignoli: нет чистого способа определить, была ли ошибка в этой функции. – ThiefMaster