сломанная функция preg_match? (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();
?>

Информация о системе:

  • сервер Apache
  • PHP 7.4.2

Тот же скрипт работает онлайн на рабочем сервере. Только на моем локальном сервере у меня есть эта проблема.

Кажется, возникла проблема с регулярными выражениями. Функция preg_replace тоже не работает, но работает str_replace с заменой обычной строки.


person Maisen1886    schedule 09.11.2020    source источник
comment
Как вы фиксируете результаты своей фоновой работы? Что это за фоновое задание (например, crontab)? Какой смысл вызывать функции setUp() и tearDown(), если они пусты?   -  person Ro Achterberg    schedule 09.11.2020
comment
У вас настроены отчеты об ошибках для E_ALL и php ini display_errors для ?   -  person Július Ľuptovec    schedule 09.11.2020
comment
фоновый скрипт — php-resque (github.com/resque/php-resque). setUp() и tearDown() пусты, я их не удалял, но в исходном скрипте они тоже пусты.   -  person Maisen1886    schedule 09.11.2020
comment
Я вижу вывод своего скрипта в терминале и не получаю никаких ошибок. Когда я устанавливаю error_reporting(E_ALL); и ini_set('display_errors', '1'); ошибок до сих пор нет.   -  person Maisen1886    schedule 09.11.2020
comment
Кстати, должен сказать, что этот же скрипт работает онлайн на рабочем сервере. Только на моем локальном сервере у меня есть эта проблема.   -  person Maisen1886    schedule 09.11.2020
comment
Кажется, есть проблема с регулярными выражениями. Функция preg_replace тоже не работает, но работает str_replace с заменой обычной строки.   -  person Maisen1886    schedule 09.11.2020


Ответы (1)


Кажется, сейчас это работает. Я не обнаружил проблемы, но после обновления до macOS Big Sur теперь все работает.

person Maisen1886    schedule 17.11.2020