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

时间:2018-12-09 08:32:32

标签: php macos composer-php jit

在macOS终端中运行 t len id accession t1 150 A,B,C X1,X2,X3 t2 200 E,F,G X4, X5,X6 时,出现以下错误:

  

PHP警告:preg_match():JIT编译失败:内存不足   phar:///usr/local/bin/composer.phar/vendor/symfony/console/Application.php   在755行

composer --version

10 个答案:

答案 0 :(得分:120)

这是已知的PHP 7.3 bug

作为临时解决方案,请编辑您的php.ini文件(在我的情况下为vi /usr/local/etc/php/7.3/php.ini),并通过以下操作禁用PHP PCRE JIT编译:

;pcre.jit=1

pcre.jit=0

答案 1 :(得分:31)

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

我想您是通过自制软件安装的php 7.3。

如果是这样,请在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

答案 2 :(得分:9)

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

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

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

答案 3 :(得分:2)

在PHP 7.1.24中,php.ini文件中没有'pcre.jit',因此您必须进行设置 memory_limit:128M(如果您增加此值)。

答案 4 :(得分:0)

我遇到了同样的错误。我使用PHP 7.3.7在Mac OS 10.11.6上安装了MAMP 5.4,并安装了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

将php.ini中的memory_limit从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

如果任何人都可以解释为什么这样做,我将不胜感激。干杯。

答案 5 :(得分:0)

按照以下步骤为我工作:

  1. 打开终端并运行php --ini
  2. 在路径“已加载的配置文件:/usr/local/php5/lib/php.ini”中打开文件php.ini https://prnt.sc/p9tspy
  3. 找到pcre.jit并将; pcre.jit = 1更改为pcre.jit = 0

答案 6 :(得分:0)

这对我有用-

  alias composer='php -d pcre.jit=0 /usr/local/bin/composer'

它不需要旧版本的PHP,并且特定于作曲家。要在整个Shell闭合过程中保持持久状态,请编辑并添加到〜/ .bash_profile。

答案 7 :(得分:0)

如果您不想弄乱该错误修复程序,则降级到PHP 7.2,可以正常工作

答案 8 :(得分:-1)

感谢您的回答。我通过composer.phar命令解决了问题,然后导出了路径。示例:

div.innerHTML = "&#" + (9812 + "KQRBNPkqrbnp".indexOf(arr2[r][c])) + ";";

答案 9 :(得分:-1)

您必须编辑 php.ini 文件并添加。

pcre.jit = 0

在 XAMPP (Mac OSX) 中,php.ini 文件位于 /Applications/XAMPP/xamppfiles/etc 文件夹中。

在 XAMPP (Windows) 中,php.ini 文件位于 C:\xampp\php 文件夹中。