どうも、白夜霧(@KiRi_Byakuya)です。
今回はWindowsの環境に「XAMPP」をインストールする方法と最低限の設定内容の覚書。
目次
- 1 完全無料のウェブアプリケーションパッケージ「XAMPP(ザンプ)」とは?
- 2 Windowsに「XAMPP(ザンプ)」をインストールする手順
- 3 XAMPPインストール後に行う最低限の設定
- 3.1 非推奨?Apache / httpd.conf:ListenにHTTPS(443)を追加
- 3.2 Apache / httpd.conf:DirectoryIndexを整理
- 3.3 PHP / php.ini:default_charsetをUTF-8に変更
- 3.4 PHP / php.ini:date.timezoneを日本の時間帯に変更
- 3.5 PHP / php.ini:mbstring.languageを日本語に変更
- 3.6 PHP / php.ini:mbstring.detect_orderをUTF-8へ
- 3.7 PHP / php.ini:mbstring.substitute_characterを有効にする
- 3.8 PHP / php.ini:expose_phpをOFFにしてバージョンを隠す
- 3.9 PHP / php.ini:session.sid_lengthの値を32以上にする
- 3.10 PHP / php.ini:session.sid_bits_per_characterのビット数を指定する
完全無料のウェブアプリケーションパッケージ「XAMPP(ザンプ)」とは?
XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージとしてまとめたもので、apachefriends.orgから提供されている。主として開発用あるいは学習用ではあるが、イントラネットなどにおいて実運用環境として使われることもある。
引用:wiki
ApacheやPHP、MySQLなどウェブアプリを作る上で必須となるフリーソフトをパッケージ化したソフト。完全に無料で誰でも使え、初心者はまずお世話になる感じ。
Windowsに「XAMPP(ザンプ)」をインストールする手順
本書では下記環境下で実施します。
- エディション:Windows 10 Home
- バージョン:20H2
- インストール日:2021/04/23
- OS ビルド:19042.1415
- エクスペリエンス:Windows Feature Experience Pack 120.2212.3920.0
XAMPPをダウンロードしてインストール
XAMPPを公式ページからダウンロードをして、exeファイルを起動する。※私の場合はバージョン「7.4.27」
Question
「ウィルス対策ソフトが、インストールの邪魔をするかもしれないけど、続行していい?」という質問メッセージが表示されますが「Yes」で問題なし。
アンチウイルスが動作しているようです。場合によっては、ソフトのインストールが遅くなったり、邪魔になったりすることがあります。詳しくは、以下のリンクをご覧ください。
http://apachefriends.org/en/faq-xampp-windows,html#antivirus
インストールを続行しますか?
※直訳
Warning
UACに関する警告が出ますが特に問題がないので「OK」をクリック。
重要! お使いのシステムでユーザーアカウント制御(UAC)が有効になっているため、XAMPPの一部の機能が制限される可能性があります。UACを使用している場合、XAMPPをC:³ Filesにインストールすることは避けてください(書き込み権限がないため)。または、このセットアップの後にmsconfigでUACを無効にしてください。
※直訳
Setup - XAMPP
「Next」
Select Components
インストールするコンポーネントの選択画面。基本的にはデフォルトのまま「Next」でOKです。
私の場合は「Tomcat」「Perl」「Webalizer」のチェックを外してインストールしました。
Installation folder
インストール先のフォルダを選択。基本的にはデフォルトのままで「Next」。
Language
日本語がないので「English」を選択して「Next」
Bitnami for XAMPP
「Learn more about Bitnami for XAMPP」のチェックを外して「Next」
Ready to Install
インストール開始の最終確認なので気にせず「Next」
Installing
インストール画面。
Completing the XAMPP Setup Wizard
下記画面が表示されればインストール完了です。
「Do you want to start the Control Panel now?」はそのままチェックありで「Finish」を押して下さい。
確認:XAMPPでApacheのダッシュボードとphpinfoを開く
動作確認を踏まえてApacheのダッシュボードとphpinfoのページを開いてみます。コントロールパネルの「Apache」の右側のActionsにある「Start」ボタンを押す。
起動に成功するとModuleのApacheが緑色になります。
起動に成功したらApacheの「Admin」を押すとダッシュボードがブラウザで表示されます。
Apacheのダッシュボード画面の右上の「PHPInfo」をクリックすると、PHPの現在の設定内容が確認できるページが開きます。
XAMPPインストール後に行う最低限の設定
ここでは、XAMPPインストール後に行う最低限の設定をご紹介します。
- 記載する内容はあくまで「私の場合」ですのでご容赦下さい。
- 「これも変えておいたほうが良い。」というものがありましたら、ぜひコメント欄で教えて下さいm(_ _)m
変更する設定ファイルは、下記ディレクトリに格納されています。※Windows版
- httpd.conf:C:\xampp\apache\conf
- php.ini:C:\xampp\php
非推奨?Apache / httpd.conf:ListenにHTTPS(443)を追加
ローカルで使う分には必須ではありませんが、とりあえずListenに443を追加。
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
Listen 443
Apacheが起動しなくなった。。。
下記エラーが出てApacheが起動できなくなりました。どうやら上記で記載した「Listen 443」を追記するとポートが競合してエラーがでるみたい。
13:29:59 [Apache] Error: Apache shutdown unexpectedly.
13:29:59 [Apache] This may be due to a blocked port, missing dependencies,
13:29:59 [Apache] improper privileges, a crash, or a shutdown by another method.
13:29:59 [Apache] Press the Logs button to view error logs and check
13:29:59 [Apache] the Windows Event Viewer for more clues
13:29:59 [Apache] If you need more help, copy and post this
13:29:59 [Apache] entire log window on the forums
Apache起動中のコントロールパネルを見ると、80と443がデフォルトで設定されている?ので競合してエラーが出てるのかな?
Apache / httpd.conf:DirectoryIndexを整理
Apache内のファイルにブラウザからアクセスした際、ファイル指定なしでアクセスした時に開くファイルを指定します。
変更前
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
home.php home.pl home.cgi home.asp home.shtml home.html home.htm
</IfModule>
デフォルトのままでも大丈夫ですが、ゴチャゴチャしているので最小限に整理。
変更後
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
PHP / php.ini:default_charsetをUTF-8に変更
文字コードをUTF-8に変更。※デフォルトでUTF-8になっているかも?
; PHP's default character set is set to UTF-8.
; http://php.net/default-charset
default_charset="UTF-8"
PHP / php.ini:date.timezoneを日本の時間帯に変更
PHPにで使用する日付や時刻の標準時間を日本時間に変更。
変更前
[Date]
date.timezone=Europe/Berlin
変更後
[Date]
date.timezone=Asia/Tokyo
結構下の方に設定があります。
PHP / php.ini:mbstring.languageを日本語に変更
コメントアウトされているので解除する。
変更前
[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
;mbstring.language = Japanese
変更後
[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
mbstring.language = Japanese
PHP / php.ini:mbstring.detect_orderをUTF-8へ
変更前
; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto
変更後
; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
mbstring.detect_order = UTF-8
PHP / php.ini:mbstring.substitute_characterを有効にする
無効な文字を代替えの文字で出力しないように変更
変更前
; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
;mbstring.substitute_character = none
変更後
; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
mbstring.substitute_character = none
PHP / php.ini:expose_phpをOFFにしてバージョンを隠す
セキュリティ対策のため、HTTP応答ヘッダーからPHPのバージョンを削除(見えなく)します。
変更前
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php=On
変更後
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php=Off
PHP / php.ini:session.sid_lengthの値を32以上にする
セッションのIDの文字列を長くして、セキュリティを改善する。※推奨は32以上。
変更前
; Set session ID character length. This value could be between 22 to 256.
; Shorter length than default is supported only for compatibility reason.
; Users should use 32 or more chars.
; http://php.net/session.sid-length
; Default Value: 32
; Development Value: 26
; Production Value: 26
session.sid_length=26
変更後
; Set session ID character length. This value could be between 22 to 256.
; Shorter length than default is supported only for compatibility reason.
; Users should use 32 or more chars.
; http://php.net/session.sid-length
; Default Value: 32
; Development Value: 26
; Production Value: 26
session.sid_length=32
PHP / php.ini:session.sid_bits_per_characterのビット数を指定する
ビット数を5に変更する。※windows版の場合は修正不要。
; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
; 4 (4 bits: 0-9, a-f)
; 5 (5 bits: 0-9, a-v)
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
session.sid_bits_per_character=5
参考になったらポッチとお願いしますm(_ _)m