在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
答案 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)
按照以下步骤为我工作:
答案 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 文件夹中。