Windows Server 2008R2にPHPとMySQLを入れてIIS、Apacheで動かすときのメモ

Windows Server 2008R2にPHPとMySQLをインストールしてみたので、その作業メモです。

とりあえず使えるようにする為の、必要最低限の設定です。

 

PHP、MySQL、Apacheはインストーラーからではなく、ZIPから作業します。

 

PHPは公式ページのダウンロードからVC9のZIPをダウンロードします。

ダウンロードしたのはPHP5.3.21です。  PHP5.4.11も公開されていますが、やり方は一緒ですね。

 

apache2を使うつもりなら「Thread Safe」、IISを使うなら「Non Thread Safe」をダウンロードします。

PHP公式のマニュアルによると、IISはNon Thread Safe推奨だそうです。

 

MySQLは公式ページのダウンロードページからMySQL Community ServerのMySQL5.5.29のX86,64bitをダウンロードします。

 

apache2は、apacheの公式にあるバイナリがVC6なので使えません。

phpのダウンロードページにも書いてありますが、Apache Loungeからバイナリをダウンロードします。

 

さて、PHPはVC9、ApacheはVC10なのでVCのパッケージが必要かもしれません。

念の為、PHPのダウンロードページから「Microsoft 2008 C++ Runtime (x86)」をダウンロードしておきます。

Apache Loungeのダウンロードページにある 「VC10 SP1 vcredist_x86.exe」もダウンロードしておきました。

 

まず、PHPの設定

Dドライブ直下で圧縮ファイルを解凍します。

解凍したフォルダは「php-5.3.21-Win32-VC9-x86」という名前になっているはずなので、フォルダ名をphpに名前を変えます。(変更しなくても問題ないのですが、面倒なので)

あとは、パスを通してphp.iniを編集するだけ。

 

パスは「システム環境変数」のPathに

D:\php;

と追加するだけです。

 

php.iniはphp.ini-developmentをコピーして編集します。

修正したのはこんなところです。

error_reporting = E_ALL  → 5.3なのでE_STRICTは表示されないようにする
error_log = D:\tmp\logs\php_errors.log -> d:\tmp\logsというフォルダを作っておきます
default_charset = "UTF-8"  
extension_dir = "d:\php\ext" 
date.timezone = Asia/Tokyo

モジュールは以下をコメントアウトしました。 mysqlなどのDBが必要無ければphp_mbstring.dllだけで十分です。


extension=php_gd2.dll
extension=php_gmp.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll

ここからはmbstringの設定です。

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off

 

ここまで設定したら、コマンドプロンプトで php -v でphpが動くか確認します。

もしVCのパッケージがインストールされていなければエラーになるので、そのときは「Microsoft 2008 C++ Runtime (x86)」をインストールして下さい。

 

次にMySQLの設定です。

これもDドライブ直下に解凍します。

解凍後、フォルダ名をmysqlに変更しました。 (これまた簡単にする為です)

my.iniはmy-xxxx.iniのどれかをコピーして作成します。

今回はmy-medium.iniをmy.iniにコピーしました。

このmy.iniを編集します。

 

[client]の修正

socket		= d:/tmp/mysql.sock
default-character-set = utf8

 

[mysqld]の修正

socket		= d:/tmp/mysql.sock
character-set-server=utf8
skip-character-set-client-handshake

修正が終わったら、コマンドプロンプトから以下のコマンドを入力してMySQLが起動したらOK。

d:\mysql\bin\mysqld –defaults-file=d:\mysql\my.ini –standalone

起動できたかどうかはタスクマネージャーで確認してみて下さい。

停止するには、このコマンドを使います。

d:\mysql\bin\mysqladmin -u root shutdown

 

バッチにしておくと簡単ですね。

初回起動時にrootのパスワードが空になっています。

パスワードを設定する為、mysqlのコマンドラインクライアントで接続します。

d:\mysql\bin\mysql -u root

接続できたら、mysql> というコマンドプロンプトになるので、

mysql> set password for root@localhost = password('xxxxxx');

でパスワードを設定します。

 

 

ここまでやったらIISの設定をするわけですが、これはPHPのマニュアルの通りなので、こちらをご覧下さい。

と丸投げ。

リンク先のマニュアルにも書いてありますが、php.iniを更に4カ所修正する必要があります。

doc_rootも doc_root = C:\inetpub\wwwroot な感じに変更します。

 

Apacheの場合は、まずインストールから。 

これもZipから作業します。

Dドライブ直下に解凍すると、フォルダの中にApache2というフォルダができるので、これをDドライブ直下に移動します。

(これまた便宜上、移動させました。)

D:\Apache2\conf\httpd.confを修正します。


ServerRoot "D:/Apache2"

LoadModuleとずら~っと書いてある辺りに以下を追加します。

PHPIniDir "D:/php"
LoadModule php5_module d:/php/php5apache2_2.dll
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

さらに書き換え

DocumentRoot "D:/Apache2/htdocs"
<Directory "D:/Apache2/htdocs">  -> C:をD:に変更
<IfModule dir_module>
    DirectoryIndex index.html index.php  -> index.phpを追加
</IfModule>

これでコマンドプロンプトからD:\Apache2\bin\httpdを起動してページが表示されるか確認します。

It Works!」 と表示されていればOKですね。

起動時にVC10のパッケージがインストールされていないとエラーが表示されたら、前述の「VC10 SP1 vcredist_x86.exe」をインストールして、再度起動してみます。

 

PHPIniDirを指定しないとD:\PHPにあるphp.iniを見に行かないということに気づかず、小一時間ハマってしまいました。

ついでに、php.iniのdoc_rootを doc_root = "d:\Apache2\htdocs" と書き換えておきます。

 

phpの動作確認は

<?php phpinfo(); ?>

と書いたテキストをtest.phpという名前でhtdocsに保存して、phpの設定が見れるか確認します。

 

MySQLがPHPから使えるかどうかは


<?php
$link = mysql_connect("localhost", "root", "パスワード");
if (!$link){ die ("Connect Error!!" . mysql_error());}
else{
echo "Connected!!";
}
?>

こんなコード書いてconnecttest.phpというファイル名でhtdocsに保存してブラウザでどうなるか確認します。

 

大体こんな感じでPHP、MySQL、Apache2 OR IISが使えるようになります。