見出し画像

PHP5.6~PHP8.1複数バージョンのXAMPPをインストールして環境設定しました。

はじめに

この記事はお絵かき掲示板PHPスクリプトの開発の裏話です。
XAMPPに関する情報をお探しの方は、別の方が書いた記事を参考にしたほうがいいかもしれません。

XAMPP複数バージョンが必要になった経緯

POTI-board EVOPetit Note、2つのお絵かき掲示板PHPスクリプトを開発しています。

POTI-board EVOは、PHP4時代に開発されたPHPスクリプトPOTI-boardをPHP7でも動くようにしたものです。
Petit NoteはPOTI-boardを改造改良した経験をもとに最初から作り直したお絵かき掲示板のPHPスクリプトです。

設置サポート掲示板で設置サポートも行っています。

その設置サポート掲示板にPOTI-boardがPHP7.1で動作しないという報告がありました。

PHP7.1では動作しなくなっていたPOTI-board EVO ver.5

PHP7.1ではテストしていなかったので、この問題がなぜ発生するのか、PHPのバージョンによるものなのか、だとするとPHPのバージョンがいくつならこの問題が起きないのか調べなければならなくなりました。
Windows10のローカル環境に、PHP5.6、PHP7.0、PHP7.1、PHP7.2、PHP8.1それぞれのバージョンが動作するXAMPPの開発環境を作る事にしました。

XAMPP複数バージョン使用で注意した事

XAMPPのポータブル版のZIPファイルを解凍して、各バージョンごとにフォルダ分けしました。
`htdocs`は共通になるようにしました。

複数のファイルをエディタで開いてパスを一括置換すれば複数のXAMPPを使用できるという解説記事もありました。
しかし、その記事しか読んでいなかったら気が付かなかったもっと簡単な方法がありました。

setup_xampp.bat

このバッチファイルをダブルクリックすると、そのフォルダに合わせて数ファイルにまたがって存在するXAMPPのパスの設定を自動的に変更してくれるので、いちいちエディタで置換しなくても大丈夫でした。

この記事を参考にさせていただきました。ありがとうございます。

ApacheとMySQLがすでに起動?

インストーラー版のXAMPPを管理者権限で起動して、ApacheとMySQLをサービスに登録していました。
Windowsを再起動しても、自動的にApacheとMySQLのサービスが起動するので他のバージョンのXAMPPのApacheやMySQLを起動しようとするとエラーになります。

手動でサービスを削除しました。
サービスに登録するとWindowsの起動時に自動的にXAMPPのApacheとMySQLが起動するので便利だったのですが、複数バージョンの切り替えが必要な時にはとても面倒な事になります。

サービスを手動で削除したあと、インストーラー版のXAMPPをアンイストールして、PHP8.1環境もポータブル版に変更しました。

htdocsフォルダは共通化したい

setup_xampp.bat

このバッチファイルをダブルクリックするだけでファイルのパスが自動的に変更されるからエディタで編集する必要はないと書きましたが、`htdocs`フォルダの共通化のために以下のファイルをエディタを開いてそこだけ手動で編集しました。
といっても、各バージョンにつき1ファイル2箇所のみなので簡単です。

httpd.conf

というファイルの中に`htdocs`のパスの設定箇所が2箇所あります。
そこを変更して`htdocs`フォルダを共通化しました。

32bit 64bit問題

XAMPPの古いバージョンは32bitです。
64bitも32bitも対して変わらないんでしょう?
いいえ。

例2 32 ビットシステムにおける整数のオーバーフロー
<?php
$large_number = 2147483647;
var_dump($large_number); // int(2147483647)

$large_number = 2147483648;
var_dump($large_number); // float(2147483648)

https://www.php.net/manual/ja/language.types.integer.php

32bitシステムで整数として扱えるのは2147483647まで。
Petit Noteで13桁の数字を整数として扱っていた箇所が誤動作しました。
(int)で13桁の数字をキャストすると整数の範囲を超えた数値が0になるからです。

XAMPPの複数バージョン使用は、PHPのバージョンを切り替える事ができるだけでなく、32bit環境と64bit環境の両方で動作確認できるメリットもあったという事です。

2022年のレンタルサーバの環境はおそらく64bitで、32bit環境はほぼないと思いますが自宅サーバを立てている方もいるかもしれません。
32bitでも64bitでも動作するに越した事はないですね。

POTI-boardとPetit Note

だいぶ脱線しましたが、複数バージョンのXAMPPによるPHPのバージョンによる動作確認、32bit、64bit環境それぞれのApacheによる動作確認ができるようになりました。

Petit Noteは32bit、64bitそれぞれの環境のPHP5.6-PHP8.1環境で動作します。
32bit環境で正常動作しなかった問題は修正されました。
POTI-boardは32bit、64bitそれぞれの環境のPHP7.2からPHP8.1で動作します。

XAMPPの複数バージョンの開発環境ができたので、新旧バージョンでの動作確認が簡単にできるようになりました。
USBメモリからでも起動できるポータブル版のXAMPPにしたのでPHP8.2のXAMPPがでてもすでに構築したPHP5.6-PHP8.1の環境はそのまま残す事ができます。

POTI-board EVOPetit Noteの開発は続いています。
今後ともどうぞよろしくお願いします。

お絵かき掲示板交流サイト

2022年6月で20周年を迎えたお絵かき掲示板交流サイト気軽にお絵かきは、お絵かき掲示板 Petit Noteになりました。
2002年から2017年までBBSNoteを使った運営でしたが2018年からPOTI-board、2022年7月からはPetit Noteに入れ替えて運営しています。
お絵かき掲示板交流サイトとPetit Noteをどうぞよろしくお願いします。




この記事が気に入ったらサポートをしてみませんか?