web-dev-qa-db-fra.com

Erreurs lors de l’installation de Composer sur macOS (échec de la compilation JIT)

Lorsque j'exécute composer --version dans le terminal macOS, les erreurs suivantes sont générées:

Avertissement PHP: preg_match (): La compilation JIT a échoué: plus de mémoire dans phar: ///usr/local/bin/composer.phar/vendor/symfony/console/Application.php à la ligne 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
32
sheraz m

Ceci est un connu PHP 7.3 bug .

Comme solution temporaire, éditez votre fichier php.ini (dans mon cas: vi /usr/local/etc/php/7.3/php.ini), désactivez la compilation PHP de PCRE JIT en modifiant:

;pcre.jit=1

à

pcre.jit=0
79
Karl Hill

J'ai résolu ce problème en désactivant la compilation jit PCRE.

Je suppose que vous avez installé PHP 7.3 via homebrew.

Si tel est le cas, créez un zzz-myphp.ini dans /usr/local/etc/php/7.3/conf.d avec le contenu suivant:

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

D'autres réponses suggèrent de désactiver PCRE JIT via un fichier de configuration. Cela fonctionne, mais méfiez-vous: cela désactive PCIT JIT pour les invocations de moteur all qui utilisent ces fichiers INI. Par conséquent, vous ne bénéficierez pas d'une amélioration de JIT pour une gamme de fonctionnalités potentiellement plus large, ce qui peut ne pas être souhaitable.

Vous pouvez désactiver JIT pour composer uniquement via:

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

Dans PHP 7.1.24, il n'y a pas de 'pcre.jit' dans le fichier php.ini, vous devez donc définir memory_limit:128M (si vous l'augmentez).

2
Ashish Sharma

J'ai eu la même erreur. J'ai installé MAMP 5.4 sur mon Mac OS 10.11.6 en utilisant PHP 7.3.7 et j'ai installé Composer. Cela a semblé fonctionner, mais dès que j'ai essayé d'installer Yii2 ou même de vérifier la version, ça m'a donné l'erreur ...

$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

Augmenter le memory_limit dans le fichier php.ini de 128 Mo à n'importe quoi n'a PAS résolu le problème et pcre.jit = 1 a été commenté, donc le désactiver n'a eu aucun effet.

Voici ce qui a fonctionné:

J'ai simplement changé le chemin d'exportation vers le répertoire de la version précédente (sans rétrograder les préférences de MAMP) et cela a fonctionné!

$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

Si quelqu'un peut expliquer pourquoi cela a fonctionné, j'apprécierais de le savoir. À votre santé.

0
Kristin Green

Merci pour les réponses .. Je l'ai résolu par la commande composer.phar, puis le chemin d'exportation Exemple:

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