Ошибки при установке 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
10 ответов
Это известная ошибка PHP 7.3.
В качестве временного исправления отредактируйте файл php.ini (в моем случае: vi /usr/local/etc/php/7.3/php.ini
), отключите компиляцию PHP PCRE JIT, изменив:
;pcre.jit=1
в
pcre.jit=0
Я решил это, отключив компиляцию PCRE jit.
Я полагаю, вы установили 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
Другие ответы предлагают отключить PCRE JIT через файл конфигурации. Это работает, но предостережение: это отключает PCRE JIT для всех вызовов движка, которые используют эти файлы INI. Поэтому вы не получите улучшения JIT для потенциально более широкой функциональности, что может быть нежелательно.
Вы можете отключить JIT для composer
только через:
php -d pcre.jit=0 composer.phar ...
В PHP 7.1.24 нет 'pcre.jit'
в файле php.ini, поэтому вы должны установить memory_limit:128M
(если вы увеличите это).
Это работает для меня, следуя инструкциям:
- Откройте Терминал и запустите php --ini
- Откройте файл php.ini по пути "Загруженный файл конфигурации: /usr/local/php5/lib/php.ini" https://prnt.sc/p9tspy
- Найдите pcre.jit и измените;pcre.jit=1 на pcre.jit=0
Вам нужно отредактировать файл php.ini и добавить.
pcre.jit = 0
В XAMPP (Mac OSX) файл php.ini находится в папке / Applications / XAMPP / xamppfiles / etc.
В XAMPP (Windows) файл php.ini находится в папке C:\xampp\ php.
Спасибо за ответы.. Я решил это командой composer.phar и затем экспортировал путь. Пример:
$composer.phar
$export PATH=/usr/local/php5/bin:$PATH
$composer.phar --version
Это работает для меня -
alias composer='php -d pcre.jit=0 /usr/local/bin/composer'
Это не требует более старой версии PHP и является специфическим для композитора. Чтобы сохранить закрытие оболочки, отредактируйте и добавьте в ~/.bash_profile.
Перейти на
PHP 7.2
если вы не хотите испортить исправление ошибки, отлично работает
У меня такая же ошибка. Я установил 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
Если кто-нибудь может объяснить, почему это сработало, я был бы признателен за это. Ура.