. * */ namespace Vvveb\Controller\Tools; use function Vvveb\__; use Vvveb\Controller\Base; class ErrorLog extends Base { function download() { $filename = ini_get('error_log'); if (is_file($filename)) { $fp = fopen($filename, 'rb'); header('Content-Description: File Transfer'); //header('Content-Type: application/octet-stream'); header('Content-Type: text/plain'); header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); fpassthru($fp); exit; } else { $this->view->errors[] = __('Error downloading log!'); return $this->index(); } } function clear() { $filename = ini_get('error_log'); if (is_file($filename)) { @$handle = fopen($filename, 'r+'); if ($handle) { if (ftruncate($handle, 0)) { $this->view->success[] = __('Log cleared!'); } else { $this->view->errors[] = __('Error clearing log!'); } fclose($handle); } else { $this->view->errors[] = __('Error clearing log!'); } } else { $this->view->errors[] = __('Log not a valid file!'); } return $this->index(); } function index() { $count = 100; $error_log = ini_get('error_log'); $is_readable = null; $text = null; if (! empty($error_log)) { $is_readable = is_readable($error_log); if ($is_readable) { $text = \Vvveb\tail($error_log, $count); } } else { $error_log = __('empty file'); } $log['count'] = $count; $log['log'] = $error_log; $log['text'] = $text ?? __('PHP error log not readable, make sure that your log is properly configured and that is readable.'); $log['readable'] = $is_readable; $this->view->log = $log; } }