WAMPServerやXAMPPなどのすぐに使用できるパッケージを使用せずに、WindowsでPHPサポートとMySQLサーバーを使用してApacheをインストールするにはどうすればよいですか?
WAMPServerやXAMPPなどのすぐに使用できるパッケージを使用せずに、WindowsでPHPサポートとMySQLサーバーを使用してApacheをインストールするにはどうすればよいですか?
回答:
最初に、Apache for Windows のプラットフォーム固有の注意事項を読むことをお勧めします。他のOSにはない、おそらくこれまで使用したことがないサービスとして実行するなど、Windows固有の機能について説明します。
これらのプラットフォーム固有のメモで述べたように、ApacheはWindows用のバイナリを提供しませんが、Apache Loungeなど、バイナリを提供するいくつかのサードパーティサイトへのリンクがあります。
そのWebサイトから、32ビットバージョン(win32)または64ビットバージョン(Win64)をダウンロードできます。OSが64ビットの場合は、常に64ビットバージョンのソフトウェアをインストールする必要がありますが、 '64ビットモジュールも使用する必要があります。つまり、32ビットモジュールしかない場合は、32ビットApacheをダウンロードします。
これを作成するときに使用したバージョンは、Apache 2.4.10 Win64です。この回答が最後に更新された最新バージョン:Apache 2.4.38 Win64(投稿の下部にある編集日をご覧ください)。
ダウンロードしたら、Apache24
フォルダをハードドライブのルートに展開するだけで、次のようなパスが得られますC:\Apache24\bin
。
コマンドラインウィンドウを開き(Windows + Rをcmd
入力してEnterキーを押します)、ディレクトリを変更しC:\Apache24\bin
て実行しますhttpd.exe
。通常、エラーは出力されません。
MSVCR110.dll
システムにないというエラーダイアログが表示された場合、Visual Studio 2012用のVisual C ++再頒布可能パッケージをインストールする必要があります-いつものように、プロンプトが表示されたら適切なビットバージョンを選択します:vcredist_x86.exe
32ビットシステムおよびvcredist_x64.exe
64 -ビット1。
ポート80にバインドできないというエラーが表示された場合は、別のアプリケーションがそのポートを使用しているかどうかを確認します。Skypeはデフォルトでポート80と443を使用することがわかっています。高度な接続設定で「ポート80および443を着信接続の代替として使用する」のチェックを外し、Skypeを再起動して変更を適用すると、問題なくApacheを起動できるはずです。
のような警告Could not reliably determine the server's fully qualified domain name
は今のところ無視できます。
Windowsファイアウォールでは、Apacheが特定のネットワークで通信できるように求められる場合があります。デフォルト設定を使用することをお勧めします。自宅および職場のネットワークでは許可しますが、パブリック/信頼できないネットワークでは許可しません。
次に、ブラウザを開き、Apacheのインストールが機能しているhttp://localhost
ことを示すページが表示された場合は、を参照しますIt works !
。
コマンドプロンプトでCtrl + Cを押すと、現在実行中のApacheを停止できるようになりました。
システムの完全修飾ドメイン名を特定できないという警告が表示された場合はC:\Apache24\conf\httpd.conf
、ServerName
変数を編集および編集して修正します(コメント内に既に存在している必要があります。コメント解除して変更してください)。
ServerName <yourhostname>
<yourhostname>
システムのホスト名またはに置き換えますlocalhost
。
最後に、システムの起動時に(誰もログインしていない場合でも)サーバーを自動的に実行する場合は、サービスとして実行する必要があります-新しい(管理者として)コマンドプロンプトで、次のように入力します。
httpd.exe -k install
これで、他のWindowsサービスと同じように制御できる「Apache2.4」という名前のサービス(Windows + Rを入力し、「services.msc」を入力してEnterキーを押す)ができました。
localhost
のみを制限する- オプション開発目的でこれを設定している場合、アクセスできる人以外に誰もアクセスできないようにしたい場合は、ファイアウォールがすでにそれを処理する必要がありますが、ローカルからのリクエストを受け入れるようにApacheに指示して、セキュリティの別のレイヤーを追加しましょうマシンのみ。
Apacheの構成ファイルを開きC:\Apache24\conf\httpd.conf
、デフォルトのディレクトリブロックを検索します<Directory "c:/Apache24/htdocs">
。
最後に行がある場合Require all granted
、これは誰でもこのサーバーにアクセスできることを意味します。Require local
ローカルマシンからのアクセスのみを許可するものを作成しましょう。
また、Apacheにループバックインターフェイスのみにバインドするように指示することもできます。その場合、上記のファイアウォールとアクセス制御ディレクティブの両方が失敗しても、サーバーはインターネット全体に対して開かれません。
このために、Listen
ディレクティブを見つけ(デフォルトではに設定されています80
)、次のように変更します。
Listen 127.0.0.1:80
Listen [::1]:80
最初の行は自明であり、2番目の行は最初の行と同等のIPv6であり、ブラケットはIPv6表記でアドレスとポートを区切るために使用されます。
ファイルを保存します。すでにサーバーを実行している場合は、変更を反映するためにサーバーを再起動します。localhost
アクセス権のみが付与され、他のすべてのユーザーはを取得し403 Forbidden
ます。
Windowsシステムへのインストールに関する公式のPHPドキュメントを読むことをお勧めします。
Windowsの公式PHPダウンロードページから最新のPHPバイナリをダウンロードし、Apacheインストールのビットバージョン(32ビットの場合はx86、64ビットの場合はx64)に一致するスレッドセーフバージョンを選択します。
非スレッドセーフバージョンは、CGIバイナリとして実行している場合のみです-詳細はこちら。
使用したバージョンは次のとおりです。PHP5.6.2 VC11 x64 Thread Safe。この回答が最後に更新された最新バージョン:PHP 7.3.3 VC15 x64 Thread Safe(投稿の下部にある編集日をご覧ください)。
PHP
ハードドライブのルートに空のフォルダーを作成し、以前にダウンロードしたアーカイブをそこに解凍しC:\PHP\ext
ます。そうしないと、パスが必要になります。
でC:\PHP
、php.ini-production
またはphp.ini-development
(目的に応じて)の名前を変更しphp.ini
ます。
そのphp.ini
ファイルを開き、extension_dir = "ext"
その行を検索してコメント解除します(最初のを削除します;
)。これにより、デフォルトの拡張子dirが設定されますext
(これにより、この投稿の以前のバージョンのように、すべての拡張子のパスに手動で追加するC:\PHP\ext
必要がなくなりext/
ます。
編集して、そのPHPを使用するようにApacheを構成します。C:\Apache24\conf\httpd.conf
すべてのLoadModule
行の後に、次を追加します。
(以下はPHP 7 専用です)
LoadModule php7_module "c:\php\php7apache2_4.dll"
<IfModule php7_module>
AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php .html
PHPIniDir "c:\php"
</IfModule>
(以下はPHP 5 専用です)
LoadModule php5_module C:/PHP/php5apache2_4.dll
<IfModule php5_module>
DirectoryIndex index.html index.php
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP"
</IfModule>
コマンドプロンプトを開いてC:\Apache24\bin
実行httpd.exe
することにより、Apacheを手動で起動してみてください。エラーが表示されない場合、設定ファイルが有効でPHPが動作している可能性が高いことを意味します。
あなたは次のようにファイルを作成することによって、あなたのPHPのインストールをテストすることができますinfo.php
と<?php phpinfo();
内側とに行くhttp://localhost/info.php
-あなたはあなたのシステムとあなたのPHPのインストールとそのすべてのモジュールに関する情報のかなりが表示されるはずです。「内部サーバーエラー」のような何か他のものを得る場合それは何かが間違っていることを意味します。
現在、Apacheプロセスを終了(コンソールでCtrl + C)してサービスを開始できます。次の部分はApacheと相互作用せず、既に開始されているサーバーで実行できます。
Composerは、パッケージマネージャーのような、PHPの依存関係管理用のツールです。PHPパッケージやフレームワーク全体を簡単にインストールできます。
Composerでは、PHP OpenSSL拡張機能を有効にする必要があるため、で有効にしC:\PHP\php.ini
ます。
テキストエディターの検索機能を使用してを検索します。php_openssl.dll
既にコメント化された行があるはずです。その行のコメントを外してください。
ComposerのWindowsインストーラーをダウンロードページからダウンロードするか、この直接リンクを使用してください。
PHPへのパスを求めるプロンプトが表示されたら、指示に従い、を参照しC:\PHP
て選択しますphp.exe
。
Composerはシステム全体にインストールされ、どこからでも使用できるようになりました-新しいコマンドプロンプトを開くだけで、試してみることができます(PATH
Composerの新しい変数セットを読み取る必要があるため、既に開いているプロンプトは使用できません)インストーラー)と入力しcomposer
ます。
素敵なASCIIアートロゴと次のようなものを取得する必要があります。
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28
あなたがPHPからMySQLデータベースにアクセスする場合、あなたは、あなたがそうすることを可能にする拡張機能を有効にする必要がありますようにphp_mysqli
かphp_pdo_mysql
-私はそれらの両方を有効にすることをお勧め。
C:\PHP\php.ini
テキストエディターでPHPの構成ファイルを開いて、php_mysqli
またはを検索しphp_pdo_mysql
ます。既に存在しているはずなので、コメントを外します。
完了、mysqli
またはを使用して任意のMySQLデータベースにアクセスできるようになりましたPDO
。
上のMySQLのインストーラのダウンロードページ Webインストーラをダウンロードしてくださいmysql-installer-web-community-xxxxx.msi
。
mysql-installer-web-community-5.6.21.1.msiを使用しました。この回答が最後に更新された最新バージョン:mysql-installer-web-community-8.0.15.0.msi(投稿の下部にある編集日をご覧ください)。
MySQLのビットバージョンはApacheやPHPのバージョンと一致する必要はありませんが、64ビットバージョンを使用することは有益ですが、インストーラーはシステムに応じて適切なバージョン(32ビットまたは64ビット)を自動的にインストールします。システムは、3 GBを超えるRAMを活用するためにサポートしています。これは、データベースサーバーが多くのRAMを使用する傾向があるため、非常に重要です。
インストーラーの手順に従ってください。開発用にこれをインストールするDeveloper default
場合、これが最良のオプションです。ネイティブGUIクライアントであるMySQL Workbenchもインストールするため、次のような遅いWebベースのツールをインストールする必要がなくなります。コマンドラインクライアントの使用に不安がある場合は、PHPMyAdmin。
すべてがインストールされると、インストーラーはいくつかの基本的な構成値を要求します。ネットワーク上の別のマシンからデータベースにアクセスする場合を除き、「ネットワークアクセス用にファイアウォールポートを開く」を無効にすることをお勧めします。
rootパスワードを設定します-開発目的のみであり、ファイアウォールがネットワークからの着信接続をブロックする場合、強力なパスワードは必要ありません。
最後に、トレイアイコンを右クリックして[アクション]-> [オプション]を選択し、Run at Windows Startup
チェックボックスをオフにして適用することにより、役に立たないMySQL Notifierを無効にすることができます。これにより、数MBのRAMが節約され、起動時にマシンの速度が低下することを回避できます。
これで、サービスとして実行され、ユーザーに依存しない(誰もログインしていなくてもアクセスできる)完全に機能するWAMPサーバーができました。
私はこれのセキュリティについてはわからないことに注意してください、開発目的では、ファイアウォールはApache(ポート80または443)とMySQL(ポート3306)の両方の着信接続をブロックする必要があるため、これはかなり安全だと思います。
これは、Windows 7のインストールでテストされました。Vista、Windows 8、および場合によってはWindows Server 2008/2012でも正常に動作するはずです。そうでない場合は、お気軽にコメントおよび/または投票してください。
MSVCR110.dll
(現在のApacheバージョンで)エラーが表示されたとき、Visual C ++ Redistributable 2010 SP1をインストールすることになりました。その後、ファイルに関する別のエラーが発生VCRUNTIME140.dll
上記の回答の手順は2017年7月時点で完全に機能しますが、PHP 7を使用する場合は、C:\Apache24\conf\httpd.conf
その回答(PHP 5のみで機能する)の代わりに、次の行をに追加する必要があります[次を追加すべてのLoadModule
行の後]:
LoadModule php7_module C:/PHP/php7apache2_4.dll
<IfModule php7_module>
DirectoryIndex index.html index.php
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP"
</IfModule>
すべてのパスが正しいことを確認してください。php7apache2_4.dll
PHPディレクトリにない場合は、間違ったパッケージをダウンロードした可能性があります。