WindowsでXAMPPにPHP8.0.0β2をインストールする


先日PHP8.0.0α1でJITを試したときはPHP8をXAMPP経由で起動することができなかったのですが、今回動かすことができたので、その方法の共有です。
今回試したのはPHP8.0.0β2です。

XAMPPインストール

まずローカルのXAMPPを削除。
公式サイトからWindows向けXAMPPの最新版をダウンロードしてインストール。
既にPHP7.4.x版が入っているようなら、そのままでもいけると思います。

PHP8.0.0インストール

Windows版ダウンロードページからVS16 x64 Thread Safeをダウンロード。
適当に解凍。
path\to\xampp\phpディレクトリにだばぁ!と上書き。
php.ini-developmentを既存のphp.iniに上書き。
extension=mbstringとかdate.timezoneとかを好きに設定する。

Apacheの設定

path\to\xampp\apache\conf\extra\httpd-xampp.confをエディタで開く。
php7ts.dllphp8ts.dllに置換。
php7apache2_4.dllphp8apache2_4.dllに置換。
php7_modulephp_moduleに置換。

起動

XAMPPコントロールパネルから起動。
http://localhostにアクセス。
これでPHP8.0.0が動いているはず。

注意点

httpd-xampp.confphp_moduleがポイントです。
ここを過去の類推からphp8_moduleにすると何故か動きません。

これUPGRADINGにしっかり書かれているので、きちんと調べればわかります。

では何故α1でJITを試した時には気付かなかったのかというと、PHP8.0.0α1のUPGRADINGには全く書かれてなかったからなんじゃ!
PHP8.0.0α2のUPGRADINGからしれっと追加されています。

ちなみに、この設定はApacheからPHPを呼び出すときの設定なので、Apacheを使わず直接コマンドラインからPHPを呼び出すのであれば不要です。
先日のJIT実験は、そうやって直接PHPを呼び出したということです。

Apache経由のJITが死ぬ

ということで今度はApache経由でのJITを試してみようと思ったわけですが、なんか動きませんでした。
opcache.jit_buffer_sizeが設定されていると、何故かApache経由でアクセスするとERR_CONNECTION_RESETになって死にます。
これもコマンドライン経由だときちんと動くので、おそらくこれもhttpd-xampp.confあたりの問題だと思うのですがよくわかりませんでした。
XAMPPかApacheかどこかがサンプル設定上げてくれるとありがたいんですけどね。

PHP CS Fixerが死ぬ

PHPのデフォルトをPHP8にするとPHP CS Fixerがエラーを吐くようになります。
VSCodeだとPHP CS Fixer: php general error.としか言わないから何が原因なのかわからねえ。

直接実行すればメッセージを確認できます。

$ "path\to\php\php.exe" "path\to\php-cs-fixer-v2.phar"
PHP needs to be a minimum version of PHP 5.6.0 and maximum version of PHP 7.4.*.

ええ…
現行最新のv2.16.4を使ってもこう言われます。
RCが出たらまた来てだそうです。ひどい。
バージョン見て門前払いじゃなくて、せめて動かせるけど保証はしない、ってなりませんかね。

VSCodeのPHPフォーマッターはたくさんありますが、その多くはPHP CS Fixerのラッパーです。
従ってPHP CS Fixerが対応しないことにはまともに開発できないため、まだまだ環境を切り替えるには早いですね。
自力で整形しているフォーマッターのプラグインがあるのかはよくわかりませんでした。

どうしても早く使いたいなら、自力で対応しているPHPstormなどを使ってみるといいかもしれません。