我尝试为我的php预加载脚本创建一个验证过程。
为了确保我没有未管理的类,我正在cli中运行一个脚本,如:
php \
-d error_reporting=2147483647 \
-d opcache.enable_cli=1 \
-d display_errors=1 \
-d display_startup_errors=1 \
-d memory_limit=96M \
-d opcache.preload=preload.php \
tools/utils/preload/check-preload.php
我收到了一个警告,因为该类中的一个无法满足缺少的依赖项。例如。:
Warning: Can't preload unlinked class User\Profile\ForceRegenerationDefaultAvatarCommand: Unknown parent Symfony\Component\Console\Command\Command in /home/mvacelet/workspace/tuleap/src/common/User/Profile/ForceRegenerationDefaultAvatarCommand.php on line 32
这很好,但我的问题是,我不能让这个警告致命。更具体地说,我想 check-preload.php
脚本退出,状态代码不同于0,因此我的ci可能会失败。
我找不到相关的配置设置,自定义错误处理程序无法处理启动错误。
2条答案
按热度按时间wkftcu5l1#
您可以实现自己的错误/异常处理。首先,您需要使用以下设置错误报告级别:
然后,您可以实现两个简单的方法来处理所有发生的错误/异常。错误的方法如下所示:
对于异常处理,该方法如下所示:
现在,您只需将这些方法注册到:
lnvxswe22#
实际上,我缺少的信息是,自定义错误处理程序必须在预加载文件中。
由于这主要是为了开发/ci目的,以确保新开发生成的预加载不会生成警告,因此我做了一些更微妙的事情:
我现在有一个
verify-preload.php
文件,该文件执行以下操作:我的确认电话是:
这种方式:
在开发或ci期间,我依靠
verify-preload.php
因此,错误被捕获。在生产环境中,我不承担将致命警告变成无害警告的风险(请记住,在本文中,警告主要是提供信息,即给定的文件不会预加载,不会对生产造成任何影响)。