PHP8でSegmentation Failtが発生した時の原因と対処法
PHP8でSculpinの静的サイトジェネラーターを使っていると、Segmentaion Failtが発生した。
試しに適当なスクリプトを作って<?php echo "こんにちは世界"; >
とすると上手く動作する。
原因と解決策を調べてみた。
原因はXdebugとJITの干渉。
原因はXdebugとJITの干渉だった。JITはPHP8から導入されたが、Xdebugの競合しているようだ。
- https://tech.griphone.co.jp/2021/12/13/php8-update/
- https://tech.fusic.co.jp/posts/2020-12-14-php8_xdebug_webgrind/
解決策
とりあえずの解決策としてXdebugのOFFにするのが手っ取り早い。 Xdebugが必要な際は、JITの方をOFFにするのがよいだろう。
まずは、php.ini
の場所を調べる。
php --ini | grep "Loaded Configuration File"
Loaded Configuration File: /home/user.phpenv/versions/8.3.21/etc/php.ini
code /home/user.phpenv/versions/8.3.21/etc/php.ini
そして、php.ini
の末尾に以下を追加して保存する。
; Xdebug 全機能を無効化
xdebug.mode=off
これで正常に動くことができた。