🐈

PHPのバージョンを更新したい!with.XAMPP

2024/03/14に公開

やりたいこと

ローカルのPHPを、8.1→8.3にアップデートしたい!

なぜ?

だって、Laravel11を使うには、8.2以上が必要だから!

やってみよう!

参考にした記事

PHPの最新バージョンをダウンロード

https://windows.php.net/download#php-8.3
PHPのホームページでダウンロード&解凍する。

このとき、同じPHPバージョンでも似たようなのがいくつかあるが、
「Non Thread Safe」 or 「Thread Safe」
→ 「Non Thread Safe」でよいっぽい。

「x64 or x86」
→x86にすると、のちにApacheが起動できなかったため、x64にした。

ダウンロードしたphpをxampp内に配置

もともと使っていたxamppディレクトリ内の、phpディレクトリのを、コピーして退避しておく。
(後で古いphp.iniを使うから & ミスったときに備えて)
phpディレクトリ内を、↑で解凍したものに差し替える。

php.ini

↑で解凍した中に、php.iniがないはず。
なので、先ほど、コピーしておいた古いphpディレクトリ内のphp.iniを、新しいphpディレクトリにコピーしていれる。

起動確認

  • php -vで、phpが8.3になっている。
  • xamppで、apacheと、mysqlが起動できる。
  • php artisan serveでlaravelが起動できる。
    ことが確認できたらOK。

修正

しかし、

xamppで、apacheと、mysqlが起動できる。

において、apacheを起動すると、起動中にはなるものの、

プロシージャエントリポイント
SSL_CTX_set_post_handshake_authがダイナミンクリンクライブラリ c:\xampp\php\ext\php_curl.dllから見つかりませんでした。

のようなエラーが出た。

そこで、
http://hiroses.seesaa.net/article/465389919.html
を参考に、
下記の2つを、php→apacheのbinにコピー(上書き)した。

libssh2.dll
nghttp2.dll

そうしたところ上手くいった。

libcrypto-1_1-x64.dll
libssl-1_1-x64.dll

は、自分の場合、php内にあるのが、

libcrypto-3-x64.dll
libssl-3-x64.dll

だったが、これはapache/binにコピーしなくてもできた。

備考

今回は、8.1→8.3の更新で、8のままだったので、不要だったが、
7→8のような更新をする場合は、
xampp\apache\conf\extra\httpd-xampp.conf
を書き換える必要もある模様。
下記を参考に。
https://qiita.com/maruyama42/items/2a6af783cf400cbcc216

Discussion