web-dev-qa-db-ja.com

PHP 7の "JITメモリの割り当てに失敗しました。PCREJITは無効になります"

PHP 7.3.11で実行するために、(DreamHostで)共有WebホスティングアカウントにインストールされたPHP v.5からWebサイトを移行しています。移行後、たまに次の警告が表示されることに気づきました。

警告:preg_match_all():JITメモリの割り当てに失敗しました。PCREJITは無効になります。これはおそらくセキュリティ制限が原因です。実行可能メモリを割り当てるためのPHP権限を付与するか、pcre.jit = 0を設定します

最後のコードは、ページの投稿されたHTMLの特別なタグを置き換えることになっている次のコード行に由来します。

if(preg_match_all("/\[".$tagBegin."(\S)+\]/U", $html, $matches, PREG_OFFSET_CAPTURE) !== false)

その警告を回避するために、v.7.3で別の方法を実行する必要があるものはありますか?

2
c00000fd

私にとっては、pcre.jit=0[Pcre]のphp.iniファイルに追加しましたが、これは非常にうまくいきました。

ini_set を使用して、警告メッセージ自体が示唆する config value を変更することで、この警告を回避できます。

ini_set("pcre.jit", "0");

正規表現を使用する前に、必ずそのコード行を実行してください。

0
Alan H.