WindowsにApache、PHP、MySQLを手動でインストールする方法は?


48

WAMPServerやXAMPPなどのすぐに使用できるパッケージを使用せずに、WindowsでPHPサポートとMySQLサーバー使用してApacheをインストールするにはどうすればよいですか?

回答:


64

アパッチ

最初に、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.exe32ビットシステムおよびvcredist_x64.exe64 -ビット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.confServerName変数を編集および編集して修正します(コメント内に既に存在している必要があります。コメント解除して変更してください)。

ServerName <yourhostname>

<yourhostname>システムのホスト名またはに置き換えますlocalhost

最後に、システムの起動時に(誰もログインしていない場合でも)サーバーを自動的に実行する場合は、サービスとして実行する必要があります-新しい(管理者として)コマンドプロンプトで、次のように入力します。

httpd.exe -k install

これで、他のWindowsサービスと同じように制御できる「Apache2.4」という名前のサービス(Windows + Rを入力し、「services.msc」を入力してEnterキーを押す)ができました。

Apacheアクセス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ます。

PHP

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:\PHPphp.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- オプション

Composerは、パッケージマネージャーのような、PHPの依存関係管理用のツールです。PHPパッケージやフレームワーク全体を簡単にインストールできます。

Composerでは、PHP OpenSSL拡張機能を有効にする必要があるため、で有効にしC:\PHP\php.iniます。

テキストエディターの検索機能を使用してを検索します。php_openssl.dll既にコメント化された行があるはずです。その行のコメントを外してください。

ComposerのWindowsインストーラーをダウンロードページからダウンロードするか、この直接リンクを使用してください

PHPへのパスを求めるプロンプトが表示されたら、指示に従い、を参照しC:\PHPて選択しますphp.exe

Composerはシステム全体にインストールされ、どこからでも使用できるようになりました-新しいコマンドプロンプトを開くだけで、試してみることができます(PATHComposerの新しい変数セットを読み取る必要があるため、既に開いているプロンプトは使用できません)インストーラー)と入力しcomposerます。

素敵なASCIIアートロゴと次のようなものを取得する必要があります。

Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

PHP MySQL拡張機能- オプション

あなたがPHPからMySQLデータベースにアクセスする場合、あなたは、あなたがそうすることを可能にする拡張機能を有効にする必要がありますようにphp_mysqliphp_pdo_mysql-私はそれらの両方を有効にすることをお勧め。

C:\PHP\php.iniテキストエディターでPHPの構成ファイルを開いて、php_mysqliまたはを検索しphp_pdo_mysqlます。既に存在しているはずなので、コメントを外します。

完了、mysqliまたはを使用して任意のMySQLデータベースにアクセスできるようになりましたPDO

MySQL

上の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でも正常に動作するはずです。そうでない場合は、お気軽にコメントおよび/または投票してください。


3
php.iniでWindowsのextension_dir = "ext"行のコメントを外す必要がある場合があることに注意してください。
chivvijim 14

@jaffamcneill確かにあなたは正しかった、それを説明するために答えを更新した。

Ypuは私の命を救った。私は過去1週間これに苦労していましたが、mysqlはphpinfoで有効にできませんでした。あなたの助けを借りて修正しました。トンありがとう。
clever_bassi 14

mod_fcgidモジュールはいつ使用する必要がありますか?システムに多数のユーザーが同時に複数の要求を行っているという問題があります。32ビットのメモリが不足するため、64ビットバージョンが必要です(レポートに対する大量の要求があるVFP ODBC)。上記の設定は正常に機能しますか、php_fcgidモジュールを使用してPHPをcgi mooduleとしてインストールする必要がありますか?これはいつも私を混乱させます...洞察力をありがとう。
ジェレミー

1
MSVCR110.dll(現在のApacheバージョンで)エラーが表示されたとき、Visual C ++ Redistributable 2010 SP1をインストールすることになりました。その後、ファイルに関する別のエラーが発生VCRUNTIME140.dll
Coded Monkey

6

PHP 7

上記の回答の手順は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.dllPHPディレクトリにない場合は、間違ったパッケージをダウンロードした可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.