ローカル環境へのPHP設置
2014/11/22
はじめに
本投稿においては、PHPのインストールから導入設定までを記載します。
前回から続きで、次の手順としてwordpressが動作する、
PHPのインストールを行います。
Apacheをインストールしたローカル環境(Windows7x64Ult)上に設置します。
手順としては以下の作業を行っていくことになります。
- Webサーバ(Apache)インストール・導入設定
- PHPインストール・導入設定(本投稿内容)
- MySQLインストール・導入設定
- WordPressインストール・導入設定
インストール手順
PHPのサイトでは5.3(5.3.27)以降はインストーラのリンクがなくなっています。
その為、インストールの方法が5.3以降では異なっています。
5.3以降のインストールでは、
お手数をおかけしますが以下の投稿をお読みください。
ダウンロード
今回はレンタルサーバに比較的に近いPHP5.2.17を利用しました。
ダウンロードサイトよりダウンロードしインストーラを実行します。
※必要なバージョンは各自ご確認ください。
php-5.2.17-nts-Win32-VC6-x86.msi
インストール自体はインストーラの手順に従っていけば終わります。
インストール
インストールの開始
ライセンスの同意
インストール先の選択
インストール先の変更を行います。
インストール先は初期状態では「C:\Program Files (x86)\PHP…」ですが、
[C:\PHP]などシンプルなものに変更し[Next]をクリックします。
Webサーバー上でPHPを実行する方法を選択
今回はレンタルサーバなどの公開ブログを、
テスト・検証する環境の構築を目的としていますので、
ご利用のレンタルサーバなどのPHP実行環境に
合わせて選択し[Next]をクリックします。
ApacheWebサーバーの設定ファイルフォルダの指定
今回はApache上でPHPを利用する為、
Apacheの設定ファイル[httpd.conf]があるフォルダを指定します。
フォルダの指定をしたら[Next]をクリックします。
PHPインストールオプションを選択
適宜必要なインストールオプションを指定し[Next]をクリックします。
インストールの確認
インストールの終了
インストールが完了したら[Finish]をクリックし終了します。
PHPの設定
PHPのインストールが完了したら、
それぞれの環境に合わせて以下を変更します。
環境変数[path]の確認
コントロールパネルのシステムを開く
スタートメニューから[コンピュータ]を右クリックし、
プルダウンメニューから[プロパティー]をクリックします。
システムの詳細設定を開く
コントロールパネルのシステムから[システムの詳細設定]をクリックし、
システムのプロパティーを開きます。
システムのプロパティーから[環境変数]をクリックします。
環境変数Pathの編集
環境変数の[システム環境変数]にある一覧から、
[Path]を探し選択した状態で[編集]をクリックします。
環境変数Pathの確認
システム変数の編集から[変数値]の値に、PHPをインストールしたフォルダ(今回は[C:\PHP])が
設定されているか確認し、設定されていない場合には追加します。
[OK]をクリックして終了します。(これまでに開いたウィンドウを閉じます)
PHP.iniの編集
PHP.iniファイルを開く
PHPをインストールしたフォルダ(今回は[C:\PHP])を開き、
[php.ini]ファイルをメモ帳などで開きます。
私の環境はWindows7x64Ultであることもあって、
PHPの機能拡張が有効な状態では以下のようなエラーが発生しました。
(一例)
このコンピュータにOCI.dllがないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみてください。
これはOracleがインストールされていない場合などに、
発生するようなのですが、使用しない機能拡張を無効にすることで、
以下のように回避することが可能です。
PHP.iniファイルの編集
変更前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
[PHP_BZ2] extension=php_bz2.dll [PHP_CURL] extension=php_curl.dll [PHP_DBA] extension=php_dba.dll [PHP_DBASE] extension=php_dbase.dll [PHP_FDF] extension=php_fdf.dll [PHP_GD2] extension=php_gd2.dll [PHP_GETTEXT] extension=php_gettext.dll [PHP_GMP] extension=php_gmp.dll [PHP_IMAP] extension=php_imap.dll [PHP_INTERBASE] extension=php_interbase.dll [PHP_LDAP] extension=php_ldap.dll [PHP_MBSTRING] extension=php_mbstring.dll [PHP_MCRYPT] extension=php_mcrypt.dll [PHP_MHASH] extension=php_mhash.dll [PHP_MIME_MAGIC] extension=php_mime_magic.dll [PHP_MING] extension=php_ming.dll [PHP_MSQL] extension=php_msql.dll [PHP_MSSQL] extension=php_mssql.dll [PHP_MYSQL] extension=php_mysql.dll [PHP_MYSQLI] extension=php_mysqli.dll [PHP_OCI8] extension=php_oci8.dll [PHP_OPENSSL] extension=php_openssl.dll [PHP_PDO] extension=php_pdo.dll [PHP_PDO_FIREBIRD] extension=php_pdo_firebird.dll [PHP_PDO_MSSQL] extension=php_pdo_mssql.dll [PHP_PDO_MYSQL] extension=php_pdo_mysql.dll [PHP_PDO_OCI] extension=php_pdo_oci.dll [PHP_PDO_OCI8] extension=php_pdo_oci8.dll [PHP_PDO_ODBC] extension=php_pdo_odbc.dll [PHP_PDO_PGSQL] extension=php_pdo_pgsql.dll [PHP_PDO_SQLITE] extension=php_pdo_sqlite.dll [PHP_PDO_SQLITE_EXTERNAL] extension=php_pdo_sqlite_external.dll [PHP_PGSQL] extension=php_pgsql.dll [PHP_PSPELL] extension=php_pspell.dll [PHP_SHMOP] extension=php_shmop.dll [PHP_SNMP] extension=php_snmp.dll [PHP_SOAP] extension=php_soap.dll [PHP_SOCKETS] extension=php_sockets.dll [PHP_SQLITE] extension=php_sqlite.dll [PHP_SYBASE_CT] extension=php_sybase_ct.dll [PHP_TIDY] extension=php_tidy.dll [PHP_XMLRPC] extension=php_xmlrpc.dll [PHP_XSL] extension=php_xsl.dll [PHP_ZIP] extension=php_zip.dll [PHP_EXIF] extension=php_exif.dll |
変更後
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
[PHP_BZ2] extension=php_bz2.dll [PHP_CURL] extension=php_curl.dll [PHP_DBA] extension=php_dba.dll [PHP_DBASE] ;extension=php_dbase.dll [PHP_FDF] ;extension=php_fdf.dll [PHP_GD2] extension=php_gd2.dll [PHP_GETTEXT] extension=php_gettext.dll [PHP_GMP] ;extension=php_gmp.dll [PHP_IMAP] extension=php_imap.dll [PHP_INTERBASE] ;extension=php_interbase.dll [PHP_LDAP] ;extension=php_ldap.dll [PHP_MBSTRING] extension=php_mbstring.dll [PHP_MCRYPT] extension=php_mcrypt.dll [PHP_MHASH] extension=php_mhash.dll [PHP_MIME_MAGIC] extension=php_mime_magic.dll [PHP_MING] ;extension=php_ming.dll [PHP_MSQL] extension=php_msql.dll [PHP_MSSQL] extension=php_mssql.dll [PHP_MYSQL] extension=php_mysql.dll [PHP_MYSQLI] extension=php_mysqli.dll [PHP_OCI8] ;extension=php_oci8.dll [PHP_OPENSSL] extension=php_openssl.dll [PHP_PDO] extension=php_pdo.dll [PHP_PDO_FIREBIRD] extension=php_pdo_firebird.dll [PHP_PDO_MSSQL] extension=php_pdo_mssql.dll [PHP_PDO_MYSQL] extension=php_pdo_mysql.dll [PHP_PDO_OCI] ;extension=php_pdo_oci.dll [PHP_PDO_OCI8] ;extension=php_pdo_oci8.dll [PHP_PDO_ODBC] extension=php_pdo_odbc.dll [PHP_PDO_PGSQL] extension=php_pdo_pgsql.dll [PHP_PDO_SQLITE] ;extension=php_pdo_sqlite.dll [PHP_PDO_SQLITE_EXTERNAL] ;extension=php_pdo_sqlite_external.dll [PHP_PGSQL] extension=php_pgsql.dll [PHP_PSPELL] ;extension=php_pspell.dll [PHP_SHMOP] extension=php_shmop.dll [PHP_SNMP] extension=php_snmp.dll [PHP_SOAP] extension=php_soap.dll [PHP_SOCKETS] extension=php_sockets.dll [PHP_SQLITE] ;extension=php_sqlite.dll [PHP_SYBASE_CT] ;extension=php_sybase_ct.dll [PHP_TIDY] extension=php_tidy.dll [PHP_XMLRPC] extension=php_xmlrpc.dll [PHP_XSL] extension=php_xsl.dll [PHP_ZIP] extension=php_zip.dll [PHP_EXIF] extension=php_exif.dll |
Apache設定ファイルの変更
PHPのインストールが完了したら、
Apache上でPHPを実行するための設定を行います。
ApacheにてPHPを実行する際には、
よくどっちにするかという議論が行われているように、
Apacheモジュールとして実行するか、
CGIで実行するかという選択をすることになります。
実際、PHPのインストール時にも、
「Webサーバー上でPHPを実行する方法を選択」で、
どのようにPHPを実行するかを選択しています。
※今回はCGI実行を選択していますが、
指定ディレクトリではCGI実行するというだけで、
サイト内すべてでモジュール実行させる併用も可能です。
この実行方式ですが、
数年前にもやっているのですがすぐに忘れてしまいます^^;
PHPのCGI実行に関しての情報が少なく、
また人によって様々な記載がって、混沌としている印象です。
結局何が正しくて、どう動くの?そんな感じです。
原因が解決してしまうと、あまりにあっけなく、
自分が迷路にハマっていただけだったと知り、
それっきり答えをあげてくれていないのでしょうか・・・。
以下、hppd.confの設定変更は適宜バックアップを取ってください。
hppd.conf(CGI実行の設定)
CGIの実行を行う際に必要な設定は以下の点です。
- スクリプトエイリアスの指定
- スクリプトエイリアスに対する実ディレクトリに対するアクセス権指定
- 実行ファイルの準備
1.スクリプトエイリアスの指定
hppd.confに対して以下の記述を行います。
CGI実行を選択しPHPをインストールした場合には、
既に設定が行われているはずです。
この設定は、ブラウザから、
「http://domain/cgi-bin/…」 のようにアクセスがあった際に、
そのcgi-bin/に指定された実際のディレクトリを、
「”C:/Apache/cgi-bin/”」に読み替えて表示するものです。
<IfModule alias_module>
ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"
</IfModule>
2.スクリプトエイリアスに対する実ディレクトリのアクセス権指定
hppd.confに対して以下の記述を行います。
「”C:/Apache/cgi-bin/”」に対してのApacheによるアクセス制御を記載します。
上記の設定のままでこの記述を行わない場合には、
以下のようにアクセス権なしで表示されます。
<Directory "C:/Apache/cgi-bin/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
ここで「Options None」の指定を「Options +ExecCGI」などと
記述していることをたまに見かけますが、
「ScriptAlias …」にてエイリアスを指定した場合、
その指定を行った先はCGIを実行するディレクトリであるとの
指定を行ったことになりますので、特に記載する必要はありません。
index.phpの配置
「”C:/Apache/cgi-bin/”」に対して「index.php」ファイルを用意します。
ファイルの内容は通常のphpinfo()を行う記述でテストを行いますが、
ファイルの1行目に「#!php-cgi」の記述が必要です。
これによりこのphpファイルは実行ファイルとして認識されます。
ここで指定している「php-cgi」とは「C:\PHP\php-cgi.exe」を示しており、
環境変数pathに対して「C:\PHP」が指定されている必要はありますが、
以下のスクリプトを「php-cgi.exe」で実行せよという命令です。
C:/Apache/cgi-bin/index.php
#!php-cgi
<?php
phpinfo();
?>
実行結果
もし以下のDirectoryIndex設定がある場合であっても、
index.phpのようなファイル名指定を省略してアクセスすることはできません。
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
PHPをCGIで実行させるために必要な設定は、以上です。
Web上では様々な説明が示されていますが、
一番大切な点はこれだけでした。
実行ファイルの1行目には「#!php-cgi
」を記載する。
2013/09/13追記
この[#!php-cgi]の記述については、省くことが可能です。
wordpressなどのindex.phpをCGI実行するような場合には以下を参考にしてください。
hppd.conf(Apacheモジュールの設定)
モジュール実行とCGI実行のについて、
順を追って説明させて頂いている新しい投稿がございます。
もしよろしければ、以下の投稿も併せてお読みいただくと分かりやすいかと思います。
PHPをApacheモジュールとして実行を行う際に必要な設定は以下の点です。
- モジュールの読み込み指定
- PHPファイルの準備
1.スモジュールの読み込み指定
hppd.confに対して以下の記述を行います。
これはPHPのインストールディレクトリに存在するDllで、
Apacheバージョンが2.2の場合には「php5apache2_2.dll」を利用します。
実際にはこの記述のみでPHPは動作します。
LoadModule php5_module "C:/PHP/php5apache2_2.dll"
2.PHPファイルの準備
次にApacheの公開ディレクトリ配下に「index.php」を作成します。
ここでindex.phpとしていますがDirectoryIndexに指定されているものであれば、
ファイル名の指定なしに実行されますし、
aaa.phpとした場合でもファイル名までURL指定すれば、同様に実行されます。
※今回は実行用の1行目は不要です。
C:/Apache/htdocs/index.php
<?php
phpinfo();
?>
実行結果
Apacheモジュールとして実行する場合には、
DirectoryIndexにindex.phpが指定されている場合には、
ファイル指定のindex.php省略が可能です。
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
ここまでPHPをCGI実行、Apacheモジュール実行と、
それぞれの実行方式で動作確認をしてきましたが、
PHPのCGI実行に関しての情報が意外と少なく、
また、いろいろな記載が出てきます。
今回は最低限の設定で動作させることを目的に記載しました。
まず、動作するということを確認したのちに、
それぞれ必要な制限や設定を載せ、絞っていくことが、
最終的には近道になると思います。
Web上の様々な情報に惑わされることなく、
必要な設定をちゃんと自分で確認しながら導入したいものです。
次はMySQLのインストールです。
最後まで読んでいただきありがとうございました。
アルゴリズン
関連記事
-
JetPack by WordPress.com統計情報の検索リファラが減って表示されている件
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ローカル環境へのphpMyAdmin設置
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Reddit™への共有をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
指定したWordPressカテゴリやタグの投稿を検索にインデックスさせない設定方法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
WordPressのタグ・カテゴリの一括登録にBulk Registration Termsプラグインが便利
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
10.スペル&文法チェック-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
WordPress4.0が公開されインストール(日本語化は画面選択のみ)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイルの拡張子を表示する(windows7)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Google+™への共有をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
DisqusCommentとZenbackの同時利用時の位置入れ替え
Google or AdMax Promotion(it) 禁断の機能がau公式 …
- PREV
- ローカル環境へのApache設置
- NEXT
- ローカル環境へのMySQL設置
Comment
ローカル環境へのPHP設置 http://t.co/SsfezHZNoC