Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Errors installing Composer on macOS (JIT compilation failed)

When I run composer --version in the macOS terminal, I get the following errors.

PHP Warning: preg_match(): JIT compilation failed: no more memory in phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php on line 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
like image 290
sheraz m Avatar asked Dec 09 '18 08:12

sheraz m


5 Answers

This is a known PHP 7.3 bug, which has already been fixed.

As a temporary workaround, edit your php.ini file (in my case: vi /usr/local/etc/php/7.3/php.ini), disable PHP PCRE JIT compilation by changing:

;pcre.jit=1

to

pcre.jit=0
like image 199
Karl Hill Avatar answered Oct 19 '22 03:10

Karl Hill


I solved this by disabling the PCRE jit compilation.

I suppose you installed php 7.3 through homebrew.

If so, create a zzz-myphp.ini in /usr/local/etc/php/7.3/conf.d with the following content:

; My php.ini settings
; Fix for PCRE "JIT compilation failed" error
[Pcre]
pcre.jit=0
like image 35
fab120 Avatar answered Oct 19 '22 03:10

fab120


Other answers suggest disabling PCRE JIT via a configuration file. That works, but caveat: this disables PCRE JIT for all engine invocations that use those INI files. You therefore won't be getting JIT improvement for a potentially wider swath of functionality, which may not be desired.

You can disable JIT for composer only via:

php -d pcre.jit=0 composer.phar ...
like image 14
bishop Avatar answered Oct 19 '22 05:10

bishop


In PHP 7.1.24 there is no 'pcre.jit' in php.ini file so you have to set memory_limit:128M (if you increase this).

like image 3
Ashish Sharma Avatar answered Oct 19 '22 04:10

Ashish Sharma


It work for me by follow steps:

  1. Open you Terminal and run php --ini
  2. Open file php.ini in the path "Loaded Configuration File: /usr/local/php5/lib/php.ini" https://prnt.sc/p9tspy
  3. Find pcre.jit and change ;pcre.jit=1 to pcre.jit=0
like image 3
Đặng Quốc Anh Avatar answered Oct 19 '22 03:10

Đặng Quốc Anh