Wie installiere ich Apache, PHP und MySQL manuell unter Windows?


48

Wie installiere ich Apache mit PHP-Unterstützung und dem MySQL-Server unter Windows, ohne einsatzbereite Pakete wie WAMPServer oder XAMPP zu verwenden?

Antworten:


65

Apache

Als erstes empfehle ich Ihnen, die plattformspezifischen Hinweise zu Apache für Windows zu lesen. Dort werden einige Windows-spezifische Funktionen erläutert, z.

Wie in diesen plattformspezifischen Hinweisen erwähnt, stellt Apache keine Binärdateien für Windows bereit. Sie enthalten jedoch Links zu verschiedenen Websites von Drittanbietern, die Binärdateien bereitstellen, z. B. Apache Lounge .

Von dieser Website können wir entweder die 32-Bit-Version (win32) oder die 64-Bit-Version (Win64) herunterladen. Wenn Sie ein 64-Bit-Betriebssystem verwenden, sollten Sie immer versuchen, 64-Bit-Versionen der Software zu installieren. Beachten Sie jedoch, dass Sie dies tun Außerdem müssen 64-Bit-Module verwendet werden. Wenn Sie also nur ein 32-Bit-Modul haben, laden Sie den 32-Bit-Apache herunter.

Hier ist die Version, die ich beim Schreiben verwendet habe: Apache 2.4.10 Win64 . Die neueste Version, als diese Antwort zuletzt aktualisiert wurde: Apache 2.4.38 Win64 (siehe Bearbeitungsdatum unten im Beitrag).

Nach dem Herunterladen extrahieren Sie einfach den Apache24Ordner in das Stammverzeichnis Ihrer Festplatte, sodass Sie einen Pfad wie folgt haben C:\Apache24\bin.

Öffnen Sie ein Befehlszeilenfenster (Windows + R und cmddrücken Sie die Eingabetaste), wechseln Sie in das Verzeichnis C:\Apache24\binund führen Sie es aus httpd.exe. Normalerweise sollte es keine Fehler ausgeben.

Wenn ein Fehlerdialogfeld angezeigt wird, in dem angegeben MSVCR110.dllwird , dass es auf Ihrem System fehlt, müssen Sie Visual C ++ Redistributable für Visual Studio 2012 installieren. Wählen Sie bei entsprechender Aufforderung wie immer die entsprechende Bitversion aus: vcredist_x86.exefür 32-Bit-Systeme und vcredist_x64.exefür 64 -Bit-Systeme -Bit diejenigen.

Wenn Sie eine Fehlermeldung erhalten, die besagt, dass keine Bindung an Port 80 möglich ist, überprüfen Sie, ob eine andere Anwendung diesen Port verwendet. Außerdem verwendet Skype standardmäßig die Ports 80 und 443. Deaktivieren Sie in den erweiterten Verbindungseinstellungen die Option "Port 80 und 443 als Alternativen für eingehende Verbindungen verwenden" , starten Sie Skype neu, um die Änderungen zu übernehmen. Anschließend sollten Sie Apache problemlos starten können.

Eine Warnung wie Could not reliably determine the server's fully qualified domain namekann vorerst ignoriert werden.

Die Windows-Firewall fordert Sie möglicherweise auf, die Kommunikation von Apache in bestimmten Netzwerken zuzulassen. Ich empfehle die Verwendung der Standardeinstellungen: Zulassen in Heim- und Arbeitsnetzwerken, jedoch nicht in öffentlichen / nicht vertrauenswürdigen Netzwerken.

Öffnen Sie dann einen Browser und navigieren Sie zu http://localhost. Wenn Sie eine Seite sehen, die besagt It works !, dass Ihre Apache-Installation funktioniert.

Sie können jetzt den aktuell ausgeführten Apache stoppen, indem Sie in der Eingabeaufforderung Strg + C drücken.

Wenn Sie eine Warnung erhalten, dass Sie den vollqualifizierten Domänennamen des Systems nicht ermitteln können, beheben Sie diese, indem Sie C:\Apache24\conf\httpd.confdie ServerNameVariable bearbeiten und bearbeiten (sie sollte bereits in einem Kommentar enthalten sein, kommentieren Sie sie einfach aus und ändern Sie sie):

ServerName <yourhostname>

Ersetzen Sie <yourhostname>durch den Hostnamen des Systems oder localhost.

Wenn Sie den Server beim Systemstart automatisch ausführen möchten (auch wenn sich niemand anmeldet), müssen Sie ihn als Dienst ausführen. Geben Sie in einer neuen Eingabeaufforderung mit erhöhten Rechten (als Administrator) Folgendes ein:

httpd.exe -k install

Jetzt haben Sie einen neuen Dienst in den Diensten (Windows + R, geben Sie "services.msc" ein und drücken Sie die Eingabetaste) mit dem Namen "Apache2.4", den Sie wie jeden anderen Windows-Dienst steuern können.

Beschränken des Apache-Zugriffs auf localhostnur - optional

Wenn Sie dies für Entwicklungszwecke einrichten und sicherstellen möchten, dass niemand außer Ihnen darauf zugreifen kann, sollte sich Ihre Firewall bereits darum kümmern, aber wir fügen der Firewall eine weitere Sicherheitsebene hinzu, indem wir Apache anweisen, Anforderungen von lokaler Seite anzunehmen Nur Maschine.

Öffnen Sie die Apache-Konfigurationsdatei C:\Apache24\conf\httpd.confund suchen Sie nach dem Standardverzeichnisblock <Directory "c:/Apache24/htdocs">.

Sollte es am Ende eine Zeile geben Require all granted, bedeutet dies, dass jeder auf diesen Server zugreifen kann. Lassen Sie uns das machen, Require localwas nur den Zugriff von der lokalen Maschine aus erlaubt.

Außerdem können Sie Apache anweisen, sich nur an die Loopback-Schnittstelle zu binden. Auf diese Weise ist der Server auch dann nicht für das gesamte Internet geöffnet, wenn sowohl Ihre Firewall als auch die oben genannten Richtlinien zur Zugriffskontrolle fehlschlagen.

Suchen Sie dazu die ListenDirektive (standardmäßig ist sie auf eingestellt 80) und ändern Sie sie in folgende:

Listen 127.0.0.1:80
Listen [::1]:80

Die erste Zeile ist selbsterklärend, die zweite Zeile entspricht der ersten IPv6-Zeile. Die Klammern werden in der IPv6-Notation verwendet, um die Adresse und den Port zu trennen.

Speichern Sie die Datei, wenn Sie den Server bereits ausführen, und starten Sie ihn neu, um unsere Änderungen zu berücksichtigen. Jetzt hat nur localhostnoch der Zugriff, alle anderen erhalten eine 403 Forbidden.

PHP

Ich empfehle Ihnen, die offizielle PHP-Dokumentation zur Installation auf Windows-Systemen zu lesen .

Laden Sie die neuesten PHP-Binärdateien von der offiziellen Download-Seite für PHP für Windows herunter und wählen Sie die thread-sichere Version aus, die der Bit-Version Ihrer Apache-Installation entspricht (x86 für 32-Bit, x64 für 64-Bit).

Die nicht thread-sichere Version ist nur als CGI-Binärdatei lauffähig - mehr Infos hier .

Die Version, die ich verwendet habe, ist folgende: PHP 5.6.2 VC11 x64 Thread Safe . Die neueste Version, als diese Antwort zuletzt aktualisiert wurde: PHP 7.3.3 VC15 x64 Thread Safe (siehe Bearbeitungsdatum unten im Beitrag).

Erstellen Sie einen leeren PHPOrdner im Stammverzeichnis Ihrer Festplatte und extrahieren Sie das zuvor heruntergeladene Archiv dort. Sie sollten einen Pfad haben C:\PHP\ext, ansonsten haben Sie etwas falsch gemacht.

In C:\PHP, benennen Sie die php.ini-productionoder php.ini-development(je nachdem , was Sie wollen) zu php.ini.

Öffnen Sie diese php.iniDatei, suchen Sie nach extension_dir = "ext"dieser Zeile und kommentieren Sie sie aus (entfernen Sie die erste ;). Dadurch wird das Standardverzeichnis für Erweiterungen auf ext(festgelegt, wodurch wie in früheren Versionen dieses Beitrags das manuelle C:\PHP\extVoranstellen ext/aller Erweiterungspfade aufgehoben und vermieden wird .

Konfigurieren Sie nun Apache für die Verwendung dieses PHP, indem Sie C:\Apache24\conf\httpd.conf- nach allen LoadModuleZeilen - Folgendes hinzufügen:

(Folgen sind für PHP 7 nur )

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>

(Das folgende ist für PHP 5 nur )

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>

Versuchen Sie nun, Apache manuell zu starten, indem Sie eine Eingabeaufforderung öffnen C:\Apache24\binund ausführen. httpd.exeWenn Sie keine Fehler sehen, bedeutet dies, dass Ihre Konfigurationsdatei gültig ist und PHP höchstwahrscheinlich funktioniert .

Sie können Ihre PHP-Installation testen, indem Sie eine Datei wie info.phpmit <?php phpinfo();inside und going to erstellen. http://localhost/info.phpSie sollten eine ganze Reihe von Informationen über Ihr System und Ihre PHP-Installation und all ihre Module sehen. Wenn Sie etwas anderes wie einen "Internen Serverfehler" erhalten, bedeutet dies, dass etwas nicht stimmt.

Sie können jetzt Ihren aktuellen Apache-Prozess beenden (Strg + C in der Konsole) und den Dienst starten - der folgende Teil interagiert nicht mit Apache und kann mit dem bereits gestarteten Server ausgeführt werden.

Komponist - optional

Composer ist ein Tool für das Abhängigkeitsmanagement in PHP, ähnlich einem Paketmanager. Es ermöglicht die einfache Installation von PHP-Paketen und sogar ganzen Frameworks.

Für Composer muss die PHP OpenSSL-Erweiterung aktiviert sein. Lassen Sie uns sie also aktivieren C:\PHP\php.ini.

Verwenden Sie zum Suchen die Suchfunktion Ihres Texteditors. php_openssl.dllEs sollte bereits eine kommentierte Zeile dafür vorhanden sein. Kommentieren Sie diese Zeile einfach aus.

Laden Sie jetzt das Windows-Installationsprogramm von Composer von der Download-Seite herunter - oder verwenden Sie einfach diesen direkten Link .

Befolgen Sie die Anweisungen. Wenn Sie nach dem Pfad zu PHP gefragt werden, navigieren Sie zu C:\PHPund wählen Sie php.exe.

Das war's, Composer ist jetzt systemweit installiert und kann von überall verwendet werden - Sie können es ausprobieren, indem Sie einfach eine neue Eingabeaufforderung öffnen (Sie können keine bereits geöffnete verwenden, da sie PATHdie von Composer festgelegte neue Variable lesen muss) Installer) und Typ composer.

Sie sollten ein nettes ASCII-Art-Logo und so etwas bekommen:

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

PHP MySQL-Erweiterungen - optional

Wenn Sie von PHP aus auf Ihre MySQL-Datenbank zugreifen möchten, müssen Sie Erweiterungen aktivieren, die dies ermöglichen, z. B. php_mysqlioder php_pdo_mysql- Ich empfehle, beide zu aktivieren.

Öffnen Sie die PHP-Konfigurationsdatei C:\PHP\php.iniin Ihrem Texteditor und suchen Sie nach php_mysqlioder php_pdo_mysql- sie sollten bereits vorhanden sein, kommentieren Sie sie aus.

Jetzt können Sie mit mysqlioder auf jede MySQL-Datenbank zugreifen PDO.

MySQL

Laden Sie auf der MySQL Installer-Download-Seite das Web- Installationsprogramm heruntermysql-installer-web-community-xxxxx.msi .

Ich habe mysql-installer-web-community-5.6.21.1.msi verwendet. Die neueste Version, als diese Antwort zuletzt aktualisiert wurde: mysql-installer-web-community-8.0.15.0.msi (siehe Bearbeitungsdatum unten im Beitrag).

Das Installationsprogramm installiert abhängig von Ihrem System automatisch die entsprechende Version (32-Bit oder 64-Bit), auch wenn die Bit-Version von MySQL nicht mit der von Apache und PHP übereinstimmen muss, es aber dennoch von Vorteil ist, die 64-Bit-Version von MySQL zu verwenden Das System unterstützt es, mehr als 3 GB RAM zu nutzen. Dies ist sehr wichtig, da Datenbankserver in der Regel viel RAM verbrauchen.

Befolgen Sie die Schritte im Installationsprogramm. Wenn Sie dies für die Entwicklung installieren, ist Developer defaultdies die beste Option. Außerdem wird MySQL Workbench, ein nativer GUI-Client, installiert, sodass Sie keine langsamen webbasierten Tools wie z PHPMyAdmin, wenn Sie mit der Verwendung des Befehlszeilenclients nicht vertraut sind.

Sobald alles installiert ist, werden Sie vom Installationsprogramm nach einigen grundlegenden Konfigurationswerten gefragt. Ich empfehle, "Firewall-Port für Netzwerkzugriff öffnen" zu deaktivieren, es sei denn, Sie möchten von einem anderen Computer im Netzwerk aus auf die Datenbank zugreifen.

Legen Sie das Root-Kennwort fest. Wenn dies nur zu Entwicklungszwecken dient und Ihre Firewall eingehende Verbindungen vom Netzwerk blockiert, ist kein sicheres Kennwort erforderlich.

Schließlich können Sie den nutzlosen MySQL Notifier deaktivieren, indem Sie mit der rechten Maustaste auf das Tray-Symbol klicken, in Aktionen -> Optionen gehen, dann das Run at Windows StartupKontrollkästchen deaktivieren und anwenden. Das spart Ihnen ein paar MB RAM und verhindert, dass Ihre Maschine beim Booten langsamer wird.

Nun haben Sie einen voll funktionsfähigen WAMP-Server, der als Dienst ausgeführt wird und von keinem Benutzer abhängig ist (auch wenn niemand angemeldet ist).

Beachten Sie, dass ich keine Ahnung von der Sicherheit habe. Zu Entwicklungszwecken würde ich sagen, dass dies ziemlich sicher ist, da Ihre Firewall eingehende Verbindungen sowohl für Apache (Port 80 und oder 443) als auch für MySQL (Port 3306) blockieren sollte.

Dies wurde auf einer Windows 7-Installation getestet und sollte auch unter Vista, Windows 8 und möglicherweise Windows Server 2008/2012 einwandfrei funktionieren. Wenn dies nicht der Fall ist, können Sie dies kommentieren und / oder ablehnen.


3
Ich würde nur bemerken, dass es notwendig sein könnte, die extension_dir = "ext" -Zeile für Windows in der php.ini zu dekommentieren.
Chivvijim

@jaffamcneill du hattest tatsächlich recht, ich habe meine Antwort aktualisiert, um das zu berücksichtigen.

Ypu hat mir das Leben gerettet. Ich hatte in der letzten Woche Probleme damit, aber mysql würde in phpinfo einfach nicht aktiviert. Ich habe es mit Ihrer Hilfe behoben. Danke vielmals.
clever_bassi

Wann sollten wir das Modul mod_fcgid verwenden? Ich habe ein Problem, bei dem mehrere Benutzer gleichzeitig mehrere Anforderungen stellen. Ich benötige eine 64-Bit-Version, da der 32-Bit-Speicher voll ist (VFP-ODBC mit umfangreichen Anfragen nach Berichten). Würde Ihr Setup oben gut funktionieren oder muss ich das php_fcgid-Modul verwenden und PHP als CGI-Moodule installieren? Das verwirrt mich immer ... Danke für jeden Einblick.
Jeremy

1
Wenn die MSVCR110.dllFehler auftauchten (auf der aktuellen Apache - Version) beenden ich die Visual C ++ Redistributable 2010 SP1 Installation auf. Danach bekam ich einen weiteren Fehler bezüglich der Datei VCRUNTIME140.dll, der die Installation von Visual C ++ Redistributable für Visual Studio 2015 erforderte.
Coded Monkey

8

PHP 7

Die Anweisungen in der obigen Antwort funktionieren ab Juli 2017 einwandfrei. Wenn Sie jedoch PHP 7 verwenden möchten, müssen Sie die folgenden Zeilen C:\Apache24\conf\httpd.confanstelle derjenigen in dieser Antwort hinzufügen (die nur für PHP 5 funktionieren). [Fügen Sie Folgendes hinzu nach allen LoadModuleZeilen] :

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>

Stellen Sie sicher, dass alle Pfade korrekt sind. Wenn Sie nicht php7apache2_4.dllin Ihrem PHP-Verzeichnis haben, haben Sie wahrscheinlich das falsche Paket heruntergeladen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.