PHP笔记-所有错误统一输出404页面(详细错误日志输出,提高安全性)
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP笔记-所有错误统一输出404页面(详细错误日志输出,提高安全性)相关的知识,希望对你有一定的参考价值。
这里我用的是自定义MVC,所以统一错误页面很简单,自定义MVC框架在这篇博文
PHP笔记-自定义MVC框架_IT1995的博客-CSDN博客
当输入任意不存在的页面时:
这里在
private static function setDispatch()
try
$controller = "\\\\" . P . "\\\\controller\\\\" . C . "Controller";
$action = A;
$object = new $controller;
$object->$action();
catch (\\Throwable $e)
//进入 404页面
//echo "Message: " . $e->__toString();
//这里开始 输出到日志
//这里结束 输出到日志
self::load404Page();
$controller = new PageNotFindController();
$controller->index();
这里使用__toString()可以输出字符串,然后将其输入到服务器日志里面,就能记录日志,不被心怀不轨的人发现了。
这里有一个要注意的地方就是Throwable
/**
* Throwable is the base interface for any object that can be thrown via a throw statement in php 7,
* including Error and Exception.
* @link https://php.net/manual/en/class.throwable.php
* @since 7.0
*/
interface Throwable extends Stringable
这里可以知道,他可以捕获错误和异常,是php7中新引用的。
其中load404Page()函数如下:
private static function load404Page()
$controllerFile = APP_PATH . "user/controller/PageNotFindController.php";
if(file_exists($controllerFile))
include $controllerFile;
PageNotFindController.php
<?php
namespace user\\controller;
use core\\Controller;
class PageNotFindController
protected $smarty;
public function __construct()
if(!class_exists("Smarty"))
include VENDOR_PATH . "smarty/Smarty.class.php";
$this->smarty = new \\Smarty();
$this->smarty->template_dir = APP_PATH . "user/view/";
$this->smarty->compile_dir = RESOURCES_PATH . "views";
public function index()
$this->smarty->display("page404.html");
这里仅仅能实现功能,提供一个思路。
以上是关于PHP笔记-所有错误统一输出404页面(详细错误日志输出,提高安全性)的主要内容,如果未能解决你的问题,请参考以下文章
php网站在windows主机搬到linux主机后,只能访问首页,其他页面地址都是404
IIS8.0详细错误 -HTTP 错误 404.3 - Not Found。由于扩展配置问题而无法提供您请求的页面。如果该页面是脚