损坏 preg_match 功能? (php 7.4.2)

broken preg_match function ? (php 7.4.2)

我有一个很奇怪的问题。

当我在浏览器中打开下面的脚本并执行它时,一切都按预期进行。即使我在命令行中调用脚本,我也有预期的结果。

但是如果我在后台作业中 运行 脚本,脚本会在“preg_match”函数中中止而不会出现任何错误。我在任何地方都没有关于此的错误消息,无论是在日志中还是在其他任何地方。我还检查了该函数是否存在并且确实存在。

脚本似乎在 preg_match 处中止并且没有显示任何关于可能的错误的消息。所以我只得到输出“CHECKPOINT 1”。

我已经检查了 PHP 个版本并且到处都是相同的版本(相同的路径)。 pcre 的设置也是相同的。

我可以为 preg_match 使用不同的模块或功能吗?有什么方法可以检查函数中发生了什么?

使用 try & catch 我没有得到关于这个问题的任何信息。

<?php
class pcre_check
{

    public function setUp() {
    }

    public function perform() {

      echo "CHECKPOINT 1";
      preg_match("/[0-9]{4}/", "6876 ABCDEFGH", $matches, PREG_OFFSET_CAPTURE);
      print_r($matches);
          echo "CHECKPOINT 2";
    }

    public function tearDown() {

    }
}

$test   = new pcre_check();
$test->setUp();
$test->perform();
$test->tearDown();
?>

系统信息:

同一脚本在生产服务器上联机运行。只有在我的本地服务器上我有这个问题。

正则表达式似乎有问题。函数 preg_replace 也不起作用,但是替换普通字符串的 str_replace 起作用了。

看来它现在正在工作。我没有发现问题,但在更新到 macOS Big Sur 后,它现在似乎可以工作了。