与缺少扩展相关的PHP错误/异常处理


PHP Error/exception handling related to missing extensions

很多时候,让我们的PHP应用程序工作需要这个或那个PHP扩展。

困难的部分是,当我们使用框架时,我们不能检查我们的项目特别需要的每一个扩展。我们假设其中一些扩展很受欢迎,它们应该在默认情况下启用。

有时用户会将我们的应用程序安装在新的/专用的服务器上,服务器上的PHP配置不太好,甚至一些我们认为应该是活动的基本扩展也没有。

是否存在可以捕获与扩展相关的错误的类。因此,基本上,每当出现与某个扩展相关的错误时,我们都可以将用户引导到一个特殊的页面,并要求他们启用该扩展,这样他们就不会认为该错误与应用程序有关,而是缺少扩展。

我们如何更好地处理此类错误/异常?

这更像是一个PHP问题,而不是Laravel问题。Laravel需要mcrypt、mbstring、openssl。。默认情况下,其他大多数/任何像样的PHP web应用程序/框架也是如此。在某些情况下,您的项目可能需要额外的模块。

然而,在PHP中,您可以使用extension_loaded函数来确定是否加载了扩展。例如

if(!extension_loaded('mcrypt')){
    //maybe try to load it or display a nice 404 error page
}

例如,您可以将上面的代码块放在index.php中,并显示自己的自定义404/500页面,很好地告诉用户有问题。