Ошибки при установке Composer на macOS (ошибка компиляции JIT)

Когда я запускаю composer --version в терминале macOS, я получаю следующие ошибки:

Предупреждение PHP: preg_match(): сбой JIT-компиляции: больше нет памяти в phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php в строке 755

Warning: preg_match(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 755
PHP Warning:  preg_match(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 759

Warning: preg_match(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 759
PHP Warning:  preg_split(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 654

Warning: preg_split(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 654
PHP Warning:  preg_split(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 1091

Warning: preg_split(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 1091
PHP Warning:  preg_replace(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Formatter/OutputFormatter.php on line 36

Warning: preg_replace(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Formatter/OutputFormatter.php on line 36

  [ErrorException]                                          
  preg_match_all(): JIT compilation failed: no more memory

Ответы

Ответ 1

Это известная ошибка PHP 7.3.

В качестве временного исправления отредактируйте файл php.ini (в моем случае: vi/usr/local/etc/php/7.3/php.ini), отключите компиляцию PHP PCRE JIT, изменив:

;pcre.jit=1

в

pcre.jit=0

Ответ 2

Я решил это, отключив компиляцию jit PCRE.

Я полагаю, вы установили php 7.3 через homebrew.

Если это так, создайте zzz-myphp.ini в /usr/local/etc/php/7.3/conf.d со следующим содержимым:

; My php.ini settings
; Fix for PCRE "JIT compilation failed" error
[Pcre]
pcre.jit=0

Ответ 3

Другие ответы предлагают отключить PCRE JIT через файл конфигурации. Это работает, но предостережение: это отключает PCRE JIT для всех вызовов движка, которые используют эти INI файлы. Поэтому вы не получите улучшения JIT для потенциально более широкой функциональности, что может быть нежелательно.

Вы можете отключить JIT для composer только через:

php -d pcre.jit=0 composer.phar ...

Ответ 4

В PHP 7.1.24 в файле php.ini нет 'pcre.jit' поэтому вы должны установить memory_limit:128M (если вы увеличите это значение).

Ответ 5

Спасибо за ответы.. Я решил это командой composer.phar и затем экспортировал путь. Пример:

$composer.phar
$export PATH=/usr/local/php5/bin:$PATH
$composer.phar --version

Ответ 6

Для меня работало обновление до macOS moajave 10.14. Не знаю, что послужило причиной этого.

Ответ 7

Если pcre.jit = 0 pcre.jit = 0 pcre.jit = Off в php.ini, не работает, попробуйте это:

Я полагаю, вы установили php 7.3 через homebrew.

Если это так, создайте zzz-myphp.ini в /usr/local/etc/php/7.3/conf.d со следующим содержимым:

; My php.ini settings
; Fix for PCRE "JIT compilation failed" error
[Pcre]
pcre.jit=0

Если это также не работает, удалите php7.3 и установите 7.2 или 7.1

brew uninstall [email protected]

Ответ 8

Я получил ту же ошибку. Я установил MAMP 5.4 на мою Mac OS 10.11.6 с помощью PHP 7.3.7 и установил Composer. Казалось, что это работает, но как только я попытался установить Yii2 или даже проверить версию, это дало мне ошибку...

$composer.phar --version
Fatal error: Uncaught ErrorException: preg_match_all(): JIT compilation failed: no more memory in phar:///Users/kristin/Sites/htdocs/composer.phar/vendor/symfony/console/Formatter/OutputFormatter.php:137

Увеличение значения memory_limit в php.ini со 128M до чего-либо НЕ решило проблему, а pcre.jit = 1 было закомментировано, поэтому его отключение тоже ничего не делало.

Вот что сработало:

Я просто изменил путь экспорта в каталог предыдущей версии (без фактического понижения в настройках MAMP), и это сработало!

$export PATH=/Applications/MAMP/bin/php/php7.2.20/bin:$PATH
$composer.phar --version
Composer version 1.9.0 2019-08-02 20:55:32

Если кто-нибудь может объяснить, почему это сработало, я бы хотел знать. Приветствия.

Ответ 9

Это работает для меня, следуя шагам:

  1. Откройте терминал и запустите php --ini
  2. Откройте файл php.ini по пути "Загруженный файл конфигурации: /usr/local/php5/lib/php.ini" https://prnt.sc/p9tspy
  3. Найдите pcre.jit и измените; pcre.jit = 1 на pcre.jit = 0