Ground Sunlight

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

ユーザ用ツール

サイト用ツール


php:7.2:httpd.conf

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
php:7.2:httpd.conf [2020/03/04 12:38]
y2sunlight [CGIとしてのPHP7の設置]
php:7.2:httpd.conf [2020/11/24 10:31] (現在)
y2sunlight [PHP7.2 Apache2の設定 ]
行 1: 行 1:
 ====== PHP7.2 Apache2の設定 ====== ====== PHP7.2 Apache2の設定 ======
- --- //[[http://www.y2sunlight.com|y2sunlight]] 2019-10-17//+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と読み替えても内容は同じです
  
 [[php:top|PHPに戻る]] [[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スクリプトのテスト環境を構築しています。[[xampp:top|XAMPP]]を使ってphpをインストールする場合は、phpに関する設定をする必要はありませんが、phpの設定が「どこで、どうして行われているか」については知っておくべきです。+===== 概要 ===== 
 + 
 +本編ではローカル環境にPHPスクリプトのテスト環境を構築しています。[[xampp:top|XAMPP]]を使ってphpをインストールする場合は、phpに関する設定をする必要はありませんが、phpの設定が「どこで、どうして行われているか」については知っておくべきです。また、設定ファイル等の存在場所はXAMPPの設定に従います。
  
 以下では、PHP7.2をApache2拡張モジュール(php7_module)またはCGIの何れかで使用するためのApache2の設定について説明します。Apacheの基本設定については「[[apache:2.4:httpd.conf|Apache2.4 httpd.confの編集]]」を参照して下さい。 以下では、PHP7.2をApache2拡張モジュール(php7_module)またはCGIの何れかで使用するためのApache2の設定について説明します。Apacheの基本設定については「[[apache:2.4:httpd.conf|Apache2.4 httpd.confの編集]]」を参照して下さい。
行 19: 行 25:
 XAMPPを使ったインストールでは、Apache2のphp関連の設定は以下のファイルで行われています: XAMPPを使ったインストールでは、Apache2のphp関連の設定は以下のファイルで行われています:
 <code> <code>
-D:\usr\xampp7.2.22\apache\conf\extra\httpd-xampp.conf+{XAMPP Install folder}\apache\conf\extra\httpd-xampp.conf
 </code> </code>
  
 Apache2のphpの設定を変更する場合は、このファイル(httpd-xampp.conf)を変更するのが良いと思います。 Apache2のphpの設定を変更する場合は、このファイル(httpd-xampp.conf)を変更するのが良いと思います。
  
-===== Apache2拡張モジュールとしてのphp7の設置 =====+\\
  
-httpd-xampp.conf+===== Apache2拡張モジュールとしてのPHP7の設置 =====
  
-<code>+<code xml httpd-xampp.conf>
 # #
 # PHP-Module setup # PHP-Module setup
行 46: 行 52:
 ここでは、[[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)に委譲しています。 ここでは、[[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)に委譲しています。
  
-===== CGIとしてのPHP7の設置 =====+=== スレッドセーフ ===
  
-httpd-xampp.conf+PHPにはマルチスレッド環境で安全に動作することを意図した実装( ''ZTS'' 版 ) とそうでない実装( ''NTS'' 版 )が存在します。マルチスレッド環境で安全に動くようなプログラムのことを「スレッドセーフ(Thread Safe)」と呼びます。ZTS とは、Zend Thread Safe の、NTS は Non Thread Safe の略です。本編で使用しているXAMPPに同封されているPHPは ''ZTS'' 版 (スレッドセーフ)です。 
 + 
 +ZTS 版も NTS 版もそれ単体では、どちらでも同じように動作し、通常は意識する必要はありませんが、PHP拡張モジュールをインストール場合には、どちらで動いているかを調べる必要があります。これは以下のコマンド( ''php -i'' )で調べる事ができます:
  
 <code> <code>
 +> php -i | find "Thread"
 +
 +Thread Safety => enabled
 +Thread API => Windows Threads
 +</code>
 +
 +また、Winodwsバイナリとして配布されているPHP7ではDLLの名前がスレッドセーフか否かによって異なっています。
 +
 +  * php7ts.dll --- ''ZTS'' 版(スレッドセーフ)
 +  * php7.dll --- ''NTS'' 版(非スレッドセーフ)
 +
 +PHPの公式配布サイト
 +  * https://windows.php.net/download/
 +
 +但し、いわゆる野良ビルト(一般ユーザーが独自にビルドを行って配布しているパッケージ)のDLLでは、ファイル名前からスレッドセーフか否かを判断することはできません。
 +
 +\\
 +
 +===== CGIとしてのPHP7の設置 =====
 +
 +<code xml httpd-xampp.conf>
 # #
 # PHP-CGI setup # PHP-CGI setup
行 62: 行 91:
 </code> </code>
  
-ここでは、[[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によってURLパスになっています。+ここでは、[[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によって指定されています。
  
-php7をCGIで起動するには、上の設定のコメントを解除して、「Apache2拡張モジュールとしてのphp7の設置」の方をコメントにすることで行えます。+尚、php7をCGIで起動するには、上の設定のコメントを解除して、「Apache2拡張モジュールとしてのphp7の設置」の方をコメントにすることで行えます。
  
 +\\
  
 ===== 設定の確認 ===== ===== 設定の確認 =====
行 73: 行 103:
 > http://localhost/dashboard/phpinfo.php > http://localhost/dashboard/phpinfo.php
  
-上のURLを実行してphp7をApache2拡張モジュール(php7_module)として、またはCGIとして動かした場合のphpinfo() の違いを確認してください。それぞれ以下のように表示されるはずです。+上のURLを実行してphp7をApache2拡張モジュール(php7_module)として、またはCGIとして動かした場合のphpinfo() の違いを確認してください。それぞれ以下のように表示されす。
  
-> [Server API]Apache 2.0 Handler --- (php7_moduleの場合) +> [Server API] Apache 2.0 Handler --- (php7_moduleの場合) 
-> [Server API]CGI/FastCGI --- (CGIの場合)+> [Server API] CGI/FastCGI --- (CGIの場合)
  
 +\\
php/7.2/httpd.conf.1583293124.txt.gz · 最終更新: 2020/03/04 12:38 by y2sunlight