Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


php:7.2:httpd.conf

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
php:7.2:httpd.conf [2019/10/17 12:57]
tanaka [設定の確認]
php:7.2:httpd.conf [2020/11/24 10:31] (現在)
y2sunlight [PHP7.2 Apache2の設定 ]
行 1: 行 1:
-> **本編は投稿中です。しばらくお待ち下さい。**+====== PHP7.2 Apache2の設定 ====== 
 +Version 7.2.22 --- [[http://www.y2sunlight.com|y2sunlight]] 2019-10-17 \\ 
 +Version 7.3.15 --- [[http://www.y2sunlight.com|y2sunlight]] 2020-03-06 \\
  
----- +PHP7.2をPHP7.3と読み替えても内容は同じです
- +
-====== PHP7.2 Apache2の設定 ====== +
- --- //[[http://www.y2sunlight.com|y2sunlight]] 2019-10-17//+
  
-[[mariadb:top|MariaDBに戻る]]+[[php:top|PHPに戻る]]
  
 関連記事 関連記事
-  * [[xampp:7.2|XAMPP7.2のインストール]] 
   * PHP7.2 Apache2の設定   * PHP7.2 Apache2の設定
   * [[php:7.2:php.ini|PHP7.2 php.iniの編集]]   * [[php:7.2:php.ini|PHP7.2 php.iniの編集]]
 +  * [[php:7.2:ext:intl|PHP7.2 intlのインストール]]
 +  * [[php:7.2:ext:zmq|PHP7.2 ZeroMQのインストール]]
  
 ---- ----
  
-本編ではローカル環境にPHPスクリプトのテスト環境を構築しています。従ってApacheの設定は、公開用サーバなどの設定とはまったく異なります。本編でのApacheの基本設定については「ローカルサーバ構築講座 Apache 2.0; 5.httpd.confの編集」を参照して下さい。+===== 概要 =====
  
-以下では、PHP5を使用するためはApache2設定ファイル(httpd.conf)編集します。本編では基本的にPHP5のApache2拡張モジュール(mod_php5)使用しますが、 特定URLパス( http://localhost/cgi/ )への要求に対してはCGIとし使かえようします。PHP5のApache2設定に関する情報以下URLから入手できます。+本編ではローカル環境PHPスクリプトテスト環境構築ています。[[xampp:top|XAMPP]]を使ってphpをインストールする場合は、phpに関する設定をする必要はありませんが、php設定が「どこで、どうして行われか」ついては知っておくべきです。また、設定ファイル等の存在場所XAMPP設定に従います。
  
-> http://www.php.net/manual/ja/install.windows.apache2.php+以下では、PHP7.2をApache2拡張モジュール(php7_module)またはCGIの何れかで使用するためのApache2の設定について説明します。Apacheの基本設定については「[[apache:2.4:httpd.conf|Apache2.4 httpd.confの編集]]」を参照して下さい。
  
-===== Apache2拡張モジュールとしてPHP5の設置 =====+=== Apache2のphp関連の設定ファイル ===
  
-Apache2拡張モジュール(mod_php5)追加+XAMPPを使ったインストールでは、Apache2php関連の設定は以下のファイルで行われています:
 <code> <code>
-### Section 1: Global Environment +{XAMPP Install folder}\apache\conf\extra\httpd-xampp.conf
-  ・ +
-  ・ +
-LoadModule php5_module "C:/php5/php5apache2.dll"+
 </code> </code>
  
-httpd.conf 「Section 1: Global Environment」内の「Dynamic Shared Object (DSOSupport」以下に上の行追加します。+Apache2のphpの設定を変更する場合は、このファイル(httpd-xampp.conf)を変更するのが良いと思います。
  
-Apache2拡張モジュール(mod_php5)の設 +\\ 
-<code>+ 
 +===== Apache2拡張モジュールとしてのPHP7の設置 ===== 
 + 
 +<code xml httpd-xampp.conf>
 # #
-Configuring PHP5/Server-Module+PHP-Module setup
 # #
-<IfModule mod_php5.c+LoadFile "D:/usr/xampp7.2.22/php/php7ts.dll" 
-AddType application/x-httpd-php .php +LoadFile "D:/usr/xampp7.2.22/php/libpq.dll" 
-PHPIniDir "C:/php5+LoadModule php7_module "D:/usr/xampp7.2.8/php/php7apache2_4.dll" 
-</IfModule>+ 
 +<FilesMatch "\.php$"
 +    SetHandler application/x-httpd-php 
 +</FilesMatch> 
 +<FilesMatch "\.phps$"> 
 +    SetHandler application/x-httpd-php-source 
 +</FilesMatch>
 </code> </code>
  
-AddTypeディレクティブを使用してPHPスクリプトファイル(拡張子が.php)をMIMEタ(application/x-httpd-php)にマッピングます。このMIMEタイプのファイルはPHP5のApache2拡張モジュール(mod_php5)で処理されます。+ここでは[[https://httpd.apache.org/docs/2.4/ja/mod/mod_so.html#loadfile|LoadFile]] と[[https://httpd.apache.org/docs/2.4/ja/mod/mod_so.html#loadmodule|LoadModule]] によってphp7で必要な3つのファイル(php7ts.dll、libpq.dll、php7apache2_4.dll)をロードし、[[https://httpd.apache.org/docs/2.4/ja/mod/core.html#sethandler|SetHandler]]によって拡張子がphpのファルに対するWebサーバーの処理を特定のハンドラ(application/x-httpd-php)に委譲ています。
  
-PHPIniDirは mod_php5のディクティブでphp.iniの設置場所(本編では:C:\php5)を指定します。+=== スッドセーフ ===
  
-<IfModule mod_php5.c> +PHPにマルチスレッド環境で安全に動作することを意図した実装( ''ZTS'' 版 ) とそうでない実装( ''NTS'' 版 )が存在します。マルチスレッド環境で安全に動くようなプログラムのことを「スレッドセーフ(Thread Safe)」と呼びます。ZTS とは、Zend Thread Safe の、NTS は Non Thread Safe の略です。本編で使用しているXAMPPに同封されているPHPは ''ZTS'' 版 (スレッドセーフ)です。
-<code> +
-LoadModule php5_module "C:/php5/php5apache2.dll" +
-</code>+
  
-と関連付けらていま。php5apache2.dll がロードされてい場合に<IfModule>ブロック内が評価されす。尚<IfModule>内のモジュール名はコンパルした時のモジュールのファイル名(mod_php5.c)ります。+ZTS 版も NTS 版もそ単体では、どちらでも同じように動作し、通常は意識する必要はありせんがPHP拡張モジュールンストール場合は、どちらで動いているかを調べる必要があります。これは以下のコマンド( ''php -i'' )で調べる事ができます:
  
-===== CGIとしてのPHP5の設置 =====+<code> 
 +> php -i | find "Thread"
  
-スクリプトエイリアスの設定 +Thread Safety =enabled 
-<code+Thread API =Windows Threads
-# PHP5/CGI +
-<Directory "C:/php5"> +
-  AllowOverride None +
-  Options None +
-  Order Allow,Deny +
-  Allow from localhost +
-  Allow from 192.168.1.0/24 +
-</Directory> +
-ScriptAlias /php5/ "C:/php5/"+
 </code> </code>
  
-<Directory>ディレクティブを使用してPHP/CGIディレクトリの為のアクセス制御を記述しす。ここではPHPのCGIバイナリ(C:\php5\php-cgi.exeなどのファイル)へのアクセス許可を目的としている、AllowOverrideやOptionsNoneにしています。また、ローカルホストとLAN内特定のホ対しのみアクセスを許可しています。+た、Winodwsバイナリとして配布されているPHP7ではDLL名前がレッドセーフか否かよっ異なっています。
  
-ScriptAliasはPHP5のイントールディクトリ(C:\php5)をURLパス/php5/にマピングし、このディクトリでのCGIの実行を許可します。+  * php7ts.dll --- ''ZTS'' 版(スレッドセーフ) 
 +  * php7.dll --- ''NTS'' 版(非スッドセーフ)
  
-PHP/CGI設定 +PHPの公式配布サイト 
-<code> +  * https://windows.php.net/download/
-<Directory "D:/WWWRoot/cgi"> +
-  AddType application/x-httpd-php5-cgi .php +
-  Action application/x-httpd-php5-cgi "/php5/php-cgi.exe" +
-</Directory> +
-</code>+
  
-特定のURLパス( http://localhost/cgi/ )内のPHPスクリプトファイ(拡張子.php)への要求しては、PHPがCGIとして使つように設定してい+但し、いわゆる野良ビト(一般ユーザー独自ビルドを行って配布しているパッケージ)のDLLでは、ファイル名前らスレッドセーフか否かを判断すことはできせん
  
-AddTypeディレクティブを使用して、PHPスクリプトファイル(拡張子が.php)を独自のMIMEタイプ(application/x-httpd-php5-cgi)にマッピングします。このMIMEタイプのファイルはActionディレクティブで指定されているCGIで処理されます。PHP5のApache2拡張モジュール(mod_php5)で処理されます。リクエストされた元のURLとファイルパスはCGI標準の環境変数 PATH_INFO と PATH_TRANSLATED を使って伝えられます。+\\
  
-===== 設定確認 =====+===== CGIとしてPHP7の設置 =====
  
-簡単なPHPスクリプトを作成し設定の確認を行います。 +<code xml httpd-xampp.conf> 
- +
-info.php +PHP-CGI setup 
-<cpde php> +# 
-<?php phpinfo() ?>+#<FilesMatch "\.php$"> 
 +#    SetHandler application/x-httpd-php-cgi 
 +#</FilesMatch
 +#<IfModule actions_module> 
 +#    Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe" 
 +#</IfModule>
 </code> </code>
  
-PHPスクリプトを下記の2箇所に作成します。(本編でのApache2ドキュメントルートはD:\WWWRootで+ここでは、[[https://httpd.apache.org/docs/2.4/ja/mod/core.html#sethandler|SetHandler]]によって拡張子がphpファイルに対するWebサーバーの処理を特定のハンドラ(application/x-httpd-php-cgi)に委譲し、[[https://httpd.apache.org/docs/2.4/ja/mod/mod_actions.html#action|Action]]によってそのハンドラのリクエストをCGIスクリプト(/php-cgi/php-cgi.exe)が実行すること指定ています。CGIスクリプのパスの部分(/php-cgi/)については ScriptAliasによって指定されていま
  
-> D:\WWWRoot --- (mod_php5用) +尚、php7をCGIで起動するには、上の設定のコメントを解除して、「Apache2拡張モジュールとしてのphp7の設置」の方をコメントにすることで行えます。
-> D:\WWWRoot\cgi --- (PHP/CGI用)+
  
-両方のPHPスクリプトをブラウザから実行して違いを確認します。+\\
  
-> http://localhost/info.php --- (mod_php5場合) +===== 設定確認 =====
-> http://localhost/cgi/info.php --- (PHP/CGIの場合)+
  
-TODO:画像貼り付け(phpinfo)+XAMPPでは以下のURLでphpinfo()を動かすことができます:
  
-上の実行例は mod_php5の場合です。画面表示中の[Server API]を見てください。両者の違いが分かるはずです。+> http://localhost/dashboard/phpinfo.php
  
-> [Server API]Apache 2.0 Handler --- (mod_php5の場合) +上のURLを実行してphp7をApache2拡張モジュール(php7_module)として、またはCGIとして動かした場合のphpinfo(の違いを確認してください。それぞれ以下のように表示されます。
-> [Server API]CGI/FastCGI --- (PHP/CGIの場合)+
  
-また、[Configuration File (php.iniPath]がC:\php5\php.ini になっている事も確認できます。+[Server API] Apache 2.0 Handler --- (php7_moduleの場合) 
 +> [Server APICGI/FastCGI --- (CGIの場合)
  
 +\\
php/7.2/httpd.conf.1571284661.txt.gz · 最終更新: 2019/10/17 12:57 by tanaka