ずっとXAMPPを使ってローカルでコーディングを行ってるんですが、そろそろphpアップデートするかいっつってアップデートしようとしたらApacheが起動しなくて躓いたときの話。
なんとか解決しました。
問題
XAMPPのサイトから、最新版のphpをダウンロードして、現在のphpと入れ替える。
基本はこれだけでいいんですが、僕の場合は入れ替えたあとにApacheを起動しようとすると、
1 2 3 4 5 6 7 |
Error: Apache shutdown unexpectedly. This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method. Press the Logs button to view error logs and check the Windows Event Viewer for more clues If you need more help, copy and post this entire log window on the forums |
こんなエラーが…
「なんかよくわからんけどだめっぽいから、エラーログ見てね」というエラー文らしい。ここでは教えてくれないのね
というわけで、下の画像にあるボタンをクリックして、Apacheのエラーログを確認。
するとこんなエラーが。
1 |
PHP Warning: 'vcruntime140.dll' 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0 |
どうも「vcruntime140.dll」というファイルが現在のphpと合いませんよと言われているらしい。vcruntime140.dllは、phpを動かすために必要なランタイムパッケージとのこと。
そこでまず、こちらの記事で紹介されているように、Vidual Studio C++再頒布可能パッケージをインストールしてみた。
https://qiita.com/ricchan_k/items/5b05851a351d3d590f34
しかし、動かず…エラーも同じである。これはたぶんWindows全体の話であって、xamppの中の小さな世界で使われているvcruntime140.dllはまた別のものなんだろうなと思った。
次に、こちらの記事で
https://labor.ewigleere.net/2020/02/24/xampp-php-update/
「xampp/apache/bunの中にあるvcruntime140.dllを、別のアプリケーションで使われているvcruntime140.dllと入れ替える」と書かれていて、そんなことができるんですかと思って試しにCドライブをvcruntime140.dllで検索、そして適当にOneDriveの中にあったvcruntime140.dllと入れ替え。
まさかこれで動かんよなーと思ってApache起動してみると…
動いた。
まとめ
・とりあえず、エラーログを見ましょう。
・”PHP Warning: ‘vcruntime140.dll’ 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0″と言われた場合、他のアプリケーションからvcruntime140.dll を持ってきて、xampp/apache/binの中にあるvcruntime140.dllと入れ替えましょう。
現場からは以上です。