WindowsでPHPを使えるようにする

備忘録も兼ねてWeb運営のメンテナンス(バックアップ)を自動化する方法について3回に渡り記事にしてきました。

  1. WSHでブラウザを自動操作する
  2. PHPでファイルとDB(PostgreSQL)をバックアップ
  3. レンタルサーバーでバックアップしたファイルを自動DLする

1.ではレンタルサーバーの管理ページへ自動ログインしてSSH登録をし、2.ではサーバー上でファイルとDBをバックアップ、そして最後の3.でローカルへファイルをダウンロードしてくる、ということで、簡易的ではありますが、全自動バックアップシステムが構築できました。

1.についてはVALUE SERVER特有のモノですので、ほかのレンタルサーバーでは不要なことも多いでしょう。ただ、割とブラウザの自動操作をしたいというケースは多いので一応紹介しました。例えばアフィリエイトなどをしているとその管理ページにログインしてレポートを毎日自動でダウンロードしたい、という要求とかあるかも知れません。これについてはまた機会があれば後ほど。

ともあれ、ここまでは特別何かソフトを用意せずとも実現可能でした。

1.ではインストール済みのIEをテキストファイルで作ったVBScriptで動かすだけですし、
2.ではそもそもレンタルサーバーにインストール済みのDBとPHPでしたし、
3.でもFTPを使うなら Windows 10 標準のコマンドでOKでした。
 (psftpを使う場合はファイルを1つだけDLしてくる必要がありましたが)

でも、これから更にWeb運営のメンテナンス作業等を自動化させてらくちん運営をするためにはローカルのWindows環境でもPHPが動くと何かと便利です。VBScriptだけでもかなりのことはできますし、むしろブラウザ自動操作なんかはIEと組み合わせたVBScriptが最強とまで思いますけど、Amazon APIとの通信とか、SSH接続とかはPHPのほうが実装が楽ですし、仮にローカルのPCをWindowsからCentOSに変更してもPHPなら動くというメリットがあります。

例えば、Raspberry PiにCentOSを入れて24時間稼働する自動メンテナンスシステムとか胸が熱くなりませんか。
(……ぼくは面倒くさがりなのでBeeboxにWindows 10を入れてサーバーにしていますが)

PHPを動かすだけならDLしてc:\phpに置けばOK

PHPをWindowsで動かしたいというだけなら下記の公式ページから必要ファイルをダウンロードして解凍するだけで完了です。
https://windows.php.net/download#php-7.2

Web開発の現場でPHPでのプログラム開発に慣れているプロでも、なぜかWindows環境でPHPを動かすことを難しく考える人がいます。

PHPをEXE化できないか、とか、まずApacheからインストールしなければ、とか。前者は確かにそんなフリーソフトもあります。phpファイルを指定するとEXEにしてくれるHC-Standaloneというソフトで、平田さんという日本人の方が開発してくださっているありがた~いソフトです。
http://hirata-create.cocolog-nifty.com/blog/HC-Standalone-S_plus.html

これはこれで大変素晴らしいソフトで、実際使わせて頂いたこともありますし、最初にEXEが生成されたときは感動すら覚えました。第三者への配布を考えたときにEXEにできるのはとても助かりますからね。

しかし、自分が運営するWebページのメンテナンスや、あるいはテスト用にPHPを動かしたいだけなら、そこまでせずとも本家のphp.netからWindows版のバイナリをDLしてくるだけで良いです。

PHPのNon Thread SafeとThread Safeって何さ

php.netを見て、どれをDLすれば良いのかわからない、という話も聞きます。

例えばこんなふうに書いてあるわけですが…
VC15 x64 Non Thread Safe VC15 x64 Thread Safe

VC15は Visual C 2017 でコンパイルされたという意味です。ややこしいですが15は内部バージョンなんです。

次のx64は64ビット用ということですね。Windows 10が動くPCなら64ビットでしょうから、x64でOKです。

最後に一番悩まされる Non Thread Safe と Thread Safe ですが、これはコマンドラインで使うなら Non Thread Safe でOKです。

名前のとおり、マルチスレッドの動作に対応しているかどうかということなのですが、Apacheのプロセス内で動かさない限りは気にしなくてOKなんです。Apacheのhttpd.confにLoadModule php7_moduleとか記述するパターンではApacheと同一プロセスで動作するため Thread Safe のPHPを使う必要があります。

でも、最近はApache自体が使われなくなりつつあります。NginxとかLiteSpeedとか、Apacheに代わる高速なWebサーバーが登場してるんですね。そして、Nginxでは通常FastCGIという仕組みを使うのでNon Thread Safeで良いですし、LiteSpeedなんかは既にPHPが組み込まれていて管理ページでPHPのバージョン変更すら出来てしまうため個別にインストールする必要はありません。

そんなわけで、Thread SafeなPHPを使うのはレガシーなApache 2.4とかで構築されたシステムくらいなわけですね。

余談が長くなりましたが、要するに一番上にあるVC15 x64 Non Thread SafeをDLしてc:\phpに解凍すればOKというわけです。

php.iniの準備

DLしたファイル php-7.2.11-nts-Win32-VC15-x64.zipc:\php へコピーすれば良いだけですが、それだけだと標準機能しか使えないため、php.iniを用意します。

WindowsにPHPインストールSTEP1

サンプルとして php.ini-development と php.ini-production が同梱されているため、好きなほうを php.ini にリネームすればOKです。developmentのほうが開発用で、display_errors = On、error_reporting = E_ALL | E_STRICT など、エラーメッセージが多く出るように設定されているため、自前でスクリプトを作るのならdevelopmentが良いかも。

また、extensions(拡張機能のDLL郡)の位置がデフォルトでは c:\php\ext になっているため、c:\php以外、例えば c:\php7 にコピーした場合は php.ini 内の extension_dir= の部分を適宜書き換える必要があります。

例)
extension_dir=c:\php7\ext

環境変数Pathの設定(任意)

コマンドラインで使うだけなら

c:\php\php.exe [PHPファイル]

というように絶対パス指定で書けばだいたい動くので絶対必要というわけではないのですが、Pathを通しておくと省略できるので便利です。大した手間でもありませんしね。

手順としては、エクスプローラーの[PC]を右クリックして[プロパティ]を開き、[システム詳細設定]→[環境変数]→Pathを選んで[編集]とクリックしていくとこのような画面が出てくるので、[新規]をクリックし、c:\phpと入力するだけです。

WindowsにPHPインストールSTEP2

PHPの動作確認

Windows 10でコマンドプロンプトを開き、php -vと実行してバージョン情報が表示されればOKです。

WindowsにPHPインストールSTEP3

スクリプトの動作確認もしたいのであれば、下記のように書いた拡張子.phpのテキストファイルを用意し、

<?php
phpinfo();
?>

C:\>php [テキストファイル]

を実行すればPHPの設定値がずらずら~と画面一杯に出てきます。

まとめ

php.netから php-7.2.11-nts-Win32-VC15-x64.zip をDLしてc:\phpへ展開

という1行で済む説明を冗長にしてしまっただけな感がありますが、ここを飛ばしてSSH2のインストールについて説明するのも変かな、と思って書いてみました。書いているうちにどのくらいの知識の人を対象にしているのかよくわからなくなりましたが… コマンドプロンプトの説明は必要なのか、とかPathの説明は、とか。

………ま、まぁ、つっこみが入ったら修正すればいいですよね(;´∀`)

adsbygoogle

フォロー