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で別の方法を実行する必要があるものはありますか?
私にとっては、pcre.jit=0
を[Pcre]
のphp.iniファイルに追加しましたが、これは非常にうまくいきました。
ini_set
を使用して、警告メッセージ自体が示唆する config value を変更することで、この警告を回避できます。
ini_set("pcre.jit", "0");
正規表現を使用する前に、必ずそのコード行を実行してください。