错误在macOS上安装Composer(JIT编译失败)

she*_*z m 61 php macos jit composer-php

当我composer --version在macOS终端中运行时,我收到以下错误:

PHP警告:preg_match():JIT编译失败:第755行的phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.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
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
Run Code Online (Sandbox Code Playgroud)

Kar*_*ill 140

这是一个已知的PHP 7.3 错误.

作为临时修复,编辑您的php.ini文件(在我的情况下vi /usr/local/etc/php/7.3/php.ini:),通过更改以下命令禁用PHP PCRE JIT编译:

;pcre.jit=1
Run Code Online (Sandbox Code Playgroud)

pcre.jit=0
Run Code Online (Sandbox Code Playgroud)

  • pcre.jit =关闭对我有用,而不是pcre.jit = 0 (3认同)
  • 这将完全禁用它。要为作曲家禁用它,请参阅主教的回答 /sf/answers/3764088751/ (2认同)

fab*_*120 34

我通过禁用PCRE jit编译解决了这个问题.

我想你通过自制软件安装了php 7.3.

如果是zzz-myphp.ini,请/usr/local/etc/php/7.3/conf.d使用以下内容创建一个in :

; My php.ini settings
; Fix for PCRE "JIT compilation failed" error
[Pcre]
pcre.jit=0
Run Code Online (Sandbox Code Playgroud)

  • 或者,只需卸载7.3,`brew uninstall php @ 7.3` (4认同)

bis*_*hop 12

其他答案建议通过配置文件禁用PCRE JIT.这有效,但需要注意:这会禁用所有使用这些INI文件的引擎调用的PCRE JIT .因此,您可能无法获得JIT改进的潜在更广泛的功能,这可能是不可取的.

composer只能通过以下方式禁用JIT :

php -d pcre.jit=0 composer.phar ...
Run Code Online (Sandbox Code Playgroud)