ローカル環境に HTTP Server を作る PHP導入

ローカル環境に HTTP Server を作る Apache導入

でApacheを導入できたので加えてPHPも導入する。

環境

Windows10 pro 64bit
Apache HTTP Server 2.4.48
PHP 8.0.10

構築条件

Apacheの導入が済んでいる
サーバのルートパス(ServerRoot)は「c:\server/Apache24」とする
ホームページのルートディレクトリは「 c:\server\storage\public_html」とする
PHPのルートパスは「C:\server\php」とする

PHPとは

動的に html を作る仕組み。PHPなしでは基本的に決められた(静的)ページしか扱えない。

sequenceDiagram participant 1 as ブラウザ(見る人)<br>htmlという言語しか読めません participant 2 as HTTP Server (Apache)<br>依頼されたページの内容を<br>html言語で返しますよ 1->>+2: index.html を見たいです 2->>+1: index.html のデータです

PHPの機能を使えば.html(.php) の中に html を作る為の手順を書いておいてページが見られる際に書いておいた手順に従って html を作るようなイメージになる。

sequenceDiagram participant 1 as ブラウザ(見る人)<br>htmlという言語しか読めません participant 2 as HTTP Server (Apache)<br>依頼されたページの内容を<br>html言語で返しますよ participant 3 as HTTP Server PHPモジュール<br>PHP言語をhtml言語に翻訳できるよ 1->>+2: index.php を見たいです 2->>+3: index.php の翻訳をお願いします 3->>+2: 翻訳が終わった index.html です 2->>+1: index.html のデータです

PHP言語はプログラマブルな言語で、変数の使用、条件分岐、データベースとの連携などが行えるため状況に応じて見た目が違うページ(html)を作れる。

PHPのダウンロード

PHPの公式サイトにアクセス → https://www.php.net

上部メニューより「Downloads」をクリック。

php-download-menu

ダウンロードしたいバージョンの「Windows downloads」をクリック。

php-download-windows

環境に合わせたものの「Zip」からダウンロード。ここではVS16 x64 Thread Safe版。

php-download-windows-zip

ダウンロードしたファイルを解凍

ダウンロードしたZipファイルを「C:\server\php」に解凍。

php-intro-files
解凍したところ

php/php.ini の準備と編集

「php.ini-development」というファイルをコピーして「php.ini」という名前にする。

php.ini の中の拡張機能フォルダの設定「extension_dir」を有効化して、パスを「C:/server/php/ext」にしておく。

extension_dir = "C:/server/php/ext"

Apache24\conf\httpd.conf の編集

ApacheにPHPモジュールをロードさせるため以下を追加。

LoadModule php_module c:/server/php/php8apache2_4.dll

PHPの設定ファイル「php.ini」があるフォルダの設定を追加。

<IfModule php_module>
    PHPINIDir "C:/server/php"
</IfModule>

.php というファイルは PHP翻訳させるようにするための設定。
デフォルトで下記のようにコメントで記載があるようなのでコメントを外す。

【修正前】
<IfModule mime_module>
	~
	#<FilesMatch "\.php$">
	#	AddHandler php-script .php
	#	AddType application/x-httpd-php .php
	#</FilesMatch>
	#<FilesMatch "\.html$">
	#	AddHandler php-script .html
	#	AddType application/x-httpd-php .html
	#</FilesMatch>
</IfModule>
【修正後】
<IfModule mime_module>

	~
	<FilesMatch "\.php$">
		AddHandler php-script .php
		AddType application/x-httpd-php .php
	</FilesMatch>
	#<FilesMatch "\.html$">
	#	AddHandler php-script .html
	#	AddType application/x-httpd-php .html
	#</FilesMatch>

</IfModule>

.html ファイルの中にも PHP のコードを書きたい場合などは html の方もコメントを外す。
ただし、ファイル名は .html なのに内部的には PHP で処理されるなどぱっと見わかりづらくなる事もあるのでここでは .php のみとする。

フォルダアドレスでアクセスされた場合に探すファイルに index.php を追加する。

[修正前]
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
[修正後]
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

PHPの動作確認

C:\server\storage\public_html の中に「phpinfo.php」ファイルを以下の内容で作成。

<?php
	phpinfo(); // PHPモジュールのバージョンや詳細についてのhtmlを返す関数を実行
?>

Apacheを再起動後、ブラウザから「http://localhost/phpinfo.php」にアクセスして次のようなページが表示されればOK。

php-intro-ok-page

Apacheの再起動ができない場合は httpd.conf の内容にミスがあるという事もあるので起動時のレポートを確認し対応する。
httpd.conf の 453行目で AddType の構文エラーがある場合は下記のようになる。

AH00526: Syntax error on line 453 of C:/server/Apache24/conf/httpd.conf:
AddType requires at least two arguments, a mime type followed by one or more file extensions