Windows IIS Webserver Hilfe
IIS Installation
- Windows-Features installieren
Systemsteuerung -> Alle Systemsteuerungselemente -> Programme und Features -> Windows-Features aktivieren oder deaktivieren
Internetinformationsdienste auswählen
CGI Feature hinzufügen - IIS testen
localhost im Browser aufrufen. -
IIS Log Files
C:\inetpub\logs\LogFiles\W3SVC[ID DER SEITE]\u_extend1.log
Web Platform Installer - Weitere nützliche Tools
Mit dem Web Platform Installer lassen sich gängige Apps einfach installieren. Falls es aber zu Fehlern kommt, sind diese meist sehr schwer zu lösen, da die Meldungen nicht viel aussagen. Ich persönlich nutze das Tool nicht zum Installieren von Anwendungen, außer mal kurz nachzusehen was es so alles Neues gibt. Den Web Platform Installer findet man entweder unter Aktionen im IIS-Manager 'Neue Webplattformkomponenten abrufen', dieser Link führt dich zum richtigen Download oder man sucht direkt über eine Suchmaschine. Nach der Installation scheint der Web Platform Installer im IIS-Manager auf.
IIS Einstellungen
- Konfigurations-Editor
Abschnitt -> system.web/sessionState -> timeout erhöhen
IIS Probleme beheben
- IIS neu starten
Windows-Eingabeaufforderung (cmd.exe = CMD) als Administrator öffnen.iisreset
(Ist dasselbe wie 'Neu starten' im IIS-Manager unter Aktionen.) - IIS starten
CMD als Administrator öffnen.iisreset /start
(Ist dasselbe wie 'Starten' im IIS-Manager unter Aktionen.) - IIS beenden
CMD als Administrator öffnen.iisreset /stop
(Ist dasselbe wie 'Beenden' im IIS-Manager unter Aktionen.) - Keine Zugriffsrechte
Dem Benutzer 'IIS_IUSRS
' oder dem derzeitigen Benutzer Vollzugriff auf den Ordner 'inetpub
' geben. - Handlerzuordnung zurücksetzen, damit die übergeordneten PHP Versionen erscheinen
Knoten Sites öffnen -> Seite auswählen -> Handlerzuordnung öffnen -> Unter Aktionen rechts 'Auf übergeordnet zurücksetzen' anklicken. - PHP Versionen entfernen
PHP Versionen im IIS-Manager (Handlerzuordnung und FastCGI-Einstellungen) entfernen.
In der Datei 'C:\Windows\System32\inetsrv\config\applicationHost.config
' die entfernten PHP Versionen löschen, falls vorhanden.
Im Ordner 'inetpub
' in gleicher Datei die entfernten PHP Versionen löschen, falls vorhanden.
Apache .htaccess Dateien von IIS interpretieren lassen
- Windows-Features installieren
Systemsteuerung -> Alle Systemsteuerungselemente -> Programme und Features -> Windows-Features aktivieren oder deaktivieren
ISAPI-Erweiterungen Feature hinzufügen (für Helicon ISAPI_Rewrite 3 Fullversion, Version 3.1.0078; erfüllt die Aufgaben von 'Apache Web Server Rewrites')
ISAPI-Filter Feature hinzufügen (das ist ein .htaccess reader; da die .htaccess eine Linux Datei ist) - Helicon ISAPI_Rewrite installieren
Benötigte Version auswählen unter https://www.helicontech.com/isapi_rewrite/. Anschließend herunterladen und installieren.
Am Ende die Registrierungsinformationen in die Datei 'httpd.conf
' einfügen, falls vorhanden.
PHP für IIS
Wenn Sie PHP als FastCGI mit IIS verwenden, nehmen Sie die Non-Thread Safe (NTS) Versionen von PHP. Da sich das FastCGI Modul um das Management parallel eingehender Anfragen kümmert.
- PHP Manager für IIS installieren
In einer Suchmaschine nach 'PHP Manager for IIS [IIS VERSION]' suchen. - PHP Versionen einrichten
Benötigte PHP Version von https://windows.php.net/download/ herunterladen.
In ein selbst erstelltes Verzeichnis, z.B. 'C:\PHP
' entpacken.
IIS-Manager öffnen -> ersten Knoten auswählen -> PHP Manager -> Register new PHP Version -> Datei auswählen -> OK - Das für PHP benötigte 'Microsoft Visual C++ Redistributable' installieren
Microsoft Visual C++ 2012 Redistributable (x86 oder x64) für VC11.
Microsoft Visual C++ 2015-2019 Redistributable (x86 oder x64) für VC14, VC15 oder VS16. - Testen
Im Ordner 'C:\inetpub\wwwroot
' die Datei 'info.php
' erstellen und folgende Zeile einfügen.‹?php phpinfo(); ?›
localhost/info.php im Browser aufrufen. - PHP Konfiguration
Die Datei 'php.ini
' öffnen.
Nötige Erweiterungen aktivierenextension=php_mysql.dll
(Erweiterung für MySQL Datenbank; diese Erweiterung ist veraltet und wurde ab PHP 7 entfernt)extension=php_mysqli.dll
(Erweiterung für MySQL Datenbank)extension=php_mbstring.dll
(Erweiterung für Multibyte String Funktionen; z.B. mb_strlen)extension=php_mcrypt.dll
(Erweiterung für Entschlüsseln und Verschlüsseln; z.B. mcrypt_encrypt)extension=php_curl.dll
(Erweiterung für cURL-Sessions; z.B. curl_close)
Nötige Einstellungendate.timezone = "Europe/Berlin"
Falls der MySQL Port ein anderer sein sollte, Stichwort Multiple MySQL Server[MySQL]
(veraltet, ab PHP 7 entfernt)mysql.default_port = 3307
oder[MySQLi]
mysqli.default_port = 3307
Nach Änderungen IIS neu starten und 'info.php
' kontrollieren. - Unterstützte PHP Versionen
https://www.php.net/supported-versions.php - Offizielle PHP Installationsanforderungen
https://www.php.net/manual/de/install.windows.requirements.php - Fehler Datei
C:\Windows\Temp\php-[PHP VERSION]_errors.log
ImageMagick für PHP unter IIS
- Wichtige Informationen prüfen
Datei 'info.php
' erstellen und die Zeile '‹?php phpinfo(); ?›
' einfügen. Die Datei im Browser aufrufen und folgendes kontrollieren.
PHP Version = 7.4.12
Compiler = MSVC15 (Visual C++ 2017)
Architecture = x86
Thread Safety = disabled - Die Datei '
php_imagick.dll
' für PHP herunterladen https://pecl.php.net/package/imagick
Extrahiere die Datei 'php_imagick.dll
' in den Ordner 'C:\PHP\php-[PHP VERSION]-nts-Win32-[COMPILER]-[ARCHITECTURE]\ext
'. - PHP Erweiterung hinzufügen
Die Datei 'php.ini
' öffnen und ganz am Ende folgende Zeilen einfügen.[PHP_IMAGICK]
extension=php_imagick.dll
- Das Paket '
ImageMagick-[IMAGEMAGICK VERSION]-[COMPILER]-[ARCHITECTURE]
' herunterladen von https://windows.php.net/downloads/pecl/deps/
Umgebungsvariable hinzufügen
Den Ordner vom heruntergeladenen Paket in ein selbst erstelltes Verzeichnis, z.B. 'C:\PHPext
' entpacken.
Umgebungsvariablen -> Systemvariablen -> Path bearbeiten -> Pfad hinzufügen 'C:\PHPext\ImageMagick-[IMAGEMAGICK VERSION]-[COMPILER]-[ARCHITECTURE]\bin;
'
ACHTUNG: Es ist nur eine Umgebungsvariable zu ImageMagick möglich, bei mehreren Angaben zu unterschiedlichen Versionen gibt es Probleme beim Laden der einzelnen Module (z.B. png wird nicht unterstützt).
Alternative zur Umgebungsvariable
Diese Methode bevorzuge ich nicht und habe diese Methode noch nicht getestet, da ich die Pakete gerne getrennt habe. Ich ändere die Umgebungsvariable, je nachdem welche ImageMagick Version ich gerade benötige.
Extrahiere die DLL Dateien vom 'bin
' Ordner, die mit CORE_RL oder IM_MOD_RL beginnen, in den Ordner 'C:\PHP\php-[PHP VERSION]-nts-Win32-[COMPILER]-[ARCHITECTURE]
'. - Unterstützte Formate prüfen
'info.php
' aufrufen und 'ImageMagick number of supported formats
' kontrollieren. - Testen
Datei 'imagick-test.php
' erstellen und die folgenden Zeilen hinzufügen. Anschließend die Datei im Browser aufrufen.‹?php
$image = new Imagick();
$image->newImage(1, 1, new ImagickPixel('#ffffff'));
$image->setImageFormat('png');
$pngData = $image->getImagesBlob();
echo strpos($pngData, '\x89PNG\r\n\x1a\n') === 0 ? 'Ok' : 'Failed';
MySQL
MySQL Installer
Mit dem MySQL Installer 'mysql-installer-web-community-[MYSQL VERSION].msi
' kann man MySQL installieren, upgraden und ändern.
Multiple MySQL Versionen
Starten mehrerer MySQL Instanzen als Windows Dienste.
- MySQL installieren
Benötigte Version von https://dev.mysql.com/downloads/mysql/ auswählen und herunterladen.
Die Datei 'mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE].zip
' entpacken und einen zusätzlichen Ordner 'mysql-[MYSQL FULL VERSION]-data
' erstellen. - Das für MySQL benötigte 'Microsoft Visual C++ Redistributable Package' installieren
Benötigte Microsoft Pakete installieren, falls nicht vorhanden.
Microsoft Visual C++ 2008 Redistributable (x86 oder x64) installieren für MySQL 5.5.
Microsoft Visual C++ 2010 Redistributable (x86 oder x64) installieren für MySQL 5.6.
Microsoft Visual C++ 2013 Redistributable (x86 oder x64) installieren für MySQL 5.7.
Microsoft Visual C++ 2015-2019 Redistributable (x86 oder x64) installieren für MySQL 8.0. - Datei für MySQL Einstellungen erstellen
Die Datei 'my-mysqld[MYSQL SHORT VERSION].ini
' erstellen, z.B.my-mysqld57.ini
und folgende Zeilen einfügen.[client]
port = 3307
(Der Standard Port für MySQL ist 3306, also fangen wir bei Port 3307 an)[mysql]
default-character-set=UTF8
[mysqld]
basedir = "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\"
datadir = "C:\MySQL\mysql-[MYSQL FULL VERSION]-data\"
port = 3307
enable-named-pipe
socket = MySQLpipe[MYSQL SHORT VERSION]
character-set-server=UTF8
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
- Umgebungsvariablen entfernen
Bei Multiplen MySQL Instances keine Umgebungsvariable hinzufügen, falls Umgebungsvariablen vorhanden sein sollten, diese wie folgt entfernen.
Umgebungsvariablen -> Systemvariablen -> Path bearbeiten -> Umgebungsvariablen entfernen
ACHTUNG: Befehle sind ohne Umgebungsvariable nicht möglich, z.B.mysql -u root -p
. - Ordner '
mysql-[MYSQL FULL VERSION]-data
' initialisieren
MySQL Version 5.6 und früher
Inhalt vom Ordner 'data
' der *.zip Datei einfügen.
MySQL Version 5.7 und später
ACHTUNG: Die *.zip Datei hat keinen Ordner 'data
' mehr.
Den Ordner neu 'mysql-[MYSQL FULL VERSION]-data
' initialisieren."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --defaults-file="C:\MySQL\my-mysqld[MYSQL SHORT VERSION].ini" --initialize --console
(--initialize-insecure
= Kein Passwort wird gesetzt; Einloggen =mysql -u root --skip-password
)
Es wird ein Passwort generiert, nicht vergessen dieses zu notieren.
z.B."C:\MySQL\mysql-8.0.22-winx64\bin\mysqld" --defaults-file="C:\MySQL\my-mysqld80.ini" --initialize --console
- Service Installieren
CMD als Administrator ausführen.
ACHTUNG: Der Code '--defaults-file
' muss hinter dem Service Name stehen."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --install MySQL[MYSQL SHORT VERSION] --defaults-file="C:\MySQL\my-mysqld[MYSQL SHORT VERSION].ini"
z.B."C:\MySQL\mysql-8.0.22-winx64\bin\mysqld" --install MySQL80 --defaults-file="C:\MySQL\my-mysqld80.ini"
Alternative Möglichkeit
Um eine bestimmte MySQL Version zu nutzen, wechsle in den Ordner der gewünschten MySQL Version und führe dann den gewünschten Befehl 'mysql [BEFEHL]
' aus.cd "C:\MySQL\mysql-[MYSQL VERSION]-win[ARCHITECTURE]\bin\"
z.B.cd "C:\MySQL\mysql-8.0.22-winx64\bin\"
- Service starten
CMD als Administrator ausführen.net start MySQL[MYSQL SHORT VERSION]
Falls der ServiceMySQL[MYSQL SHORT VERSION]
nicht startet, kontrolliere die '*.err
' Datei im Ordner 'C:\MySQL\mysql-[MYSQL FULL VERSION]-data
'.
Alternative Möglichkeit
Temporären mysqld Service starten.
ACHTUNG: Es darf kein installierter MySQL Service laufen, ansonsten kann der neue temporäre mysqld Service nicht gestartet werden."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --port=[PORT] --user=[BENUTZER] --datadir="C:\MySQL\mysql-[MYSQL FULL VERSION]-data\" --console
(--console listet Fehler auf)
z.B."C:\MySQL\mysql-5.5.59-win32\bin\mysqld" --port=3307 --user=root --datadir="C:\MySQL\mysql-5.5.59-data\" --console
Temporären mysqld Service herunterfahren."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --host=127.0.0.1 --port=[PORT] --user=[BENUTZER] --password shutdown
- Einloggen
CMD als Administrator ausführen."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysql" --host=localhost --port=[PORT] --user=[BENUTZER] --password=[PASSWORT]
(Ausführliche Version)mysql -h localhost -P [PORT] -u [BENUTZER] -p
(Kurze Version, Passwort wird nach ausführen des Befehls nachgefragt)
z.B."C:\MySQL\mysql-5.7.21-win32\bin\mysql" -h localhost -P 3309 -u root -p
- Testen
Folgenden Befehl nach dem Einloggen ausführen.show variables where Variable_name in('hostname','port');
MySQL Einstellungen
- Berechtigungen
Der MySQL Server Benutzer muss die Datei 'my-mysqld[MYSQL SHORT VERSION].ini
' lesen können. - Alle Funktionen von mysqld
"C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --help
- Offene Ports anzeigen
netstat -an
- Bestimmten Port prüfen
netstat -an | find '[PORT]'
root Passwort ändern
- Einloggen
mysql -h localhost -P [PORT] -u [BENUTZER] -p
- MySQL 5.7.5 und früher
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('[PASSWORT]');
- MySQL 5.7.6 und später
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[PASSWORT]';
MySQL Windows Service entfernen
- Service stoppen
CMD als Administrator ausführen.net stop MySQL[MYSQL SHORT VERSION]
- Service löschen
sc delete MySQL[MYSQL SHORT VERSION]
MySQL Upgrade unter Windows
- MySQL Backup erstellen
Verzeichnis 'mysql-[MYSQL FULL VERSION]-data
' sichern. - Aktuellen Service stoppen
net stop MySQL[MYSQL SHORT VERSION]
- Aktuellen Service löschen
sc delete MySQL[MYSQL SHORT VERSION]
- Aktuelles MySQL löschen und neues MySQL entpacken
ACHTUNG: Das aktuelle Verzeichnis 'mysql-[MYSQL FULL VERSION]-data
' nicht löschen. - Neuen Service installieren
ACHTUNG: Der Code '--defaults-file
' muss hinter dem Service Name stehen."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --install MySQL[MYSQL SHORT VERSION] --defaults-file="C:\MySQL\my-mysqld[MYSQL SHORT VERSION].ini"
z.B."C:\MySQL\mysql-5.7.21-win32\bin\mysqld" --install MySQL57 --defaults-file="C:\MySQL\my-mysqld57.ini"
- Service starten
net start MySQL[MYSQL SHORT VERSION]
- Upgrade durchführen
Die Datei 'ibdata1
' auf KEINEN Fall löschen. In der Datei 'ibdata1
' sind alle Tabellen, Passwörter, usw. enthalten.
Wenn NÖTIG 'ib_logfile()
' und 'ib_logfile1
' löschen.
Die Dateien '*.err
' und '*.pid
' löschen wenn vorhanden."C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysql_upgrade" -h localhost -P [PORT] -u root -p
z.B."C:\MySQL\mysql-5.7.21-win32\bin\mysql_upgrade" -h localhost -P 3309 -u root -p
- Server stoppen und neu starten
net stop MySQL[MYSQL SHORT VERSION]
net start MySQL[MYSQL SHORT VERSION]
phpMyAdmin
- phpMyAdmin installieren
Paket von https://www.phpmyadmin.net/downloads/ herunterladen.
Alle Dateien entpacken nach 'C:\inetpub\wwwroot\phpmyadmin
'.
Dem Benutzer 'IUSR
' Vollzugriff auf den Ordner 'C:\inetpub
' gewähren, um mögliche Probleme zu vermeiden. - phpMyAdmin im IIS in eine Anwendung konvertieren
Rechtsklick auf 'phpmyadmin' -> In Anwendung konvertieren -> OK - Testen
localhost/phpmyadmin im Browser aufrufen. - Die Datei '
config.inc.php
' konfigurieren
Ordner 'config
' unter 'C:\inetpub\wwwroot\phpmyadmin
' anlegen.
localhost/phpmyadmin/setup im Browser aufrufen.
Benötigte Einstellungen vornehmen.
Erzeugte 'config.inc.php
' im Verzeichnis 'C:\inetpub\wwwroot\phpmyadmin
' ablegen.
Ordner 'config
' löschen.
localhost/phpmyadmin im Browser aufrufen. Fertig.
phpMyAdmin Export Einstellungen
Folgende Optionen wähle ich beim Export zusätzlich zu den Standard Optionen aus.
- Export in einer Transaktion zusammenfassen
- Fremdschlüsselüberprüfung deaktivieren
- DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER-Befehl hinzufügen
- IF NOT EXISTS (weniger effizient, da Indizes während der Tabellen-Erstellung erzeugt werden)
- Maximale Länge der erstellten Abfrage 999999
E-Mails über PHP versenden
Fake sendmail for Windows
- 'Fake sendmail for Windows' herunterladen und entpacken
https://www.glob.com.au/sendmail/sendmail.zip
Das Archiv 'sendmail.zip
' in das Verzeichnis 'C:\PHPext\sendmail\
' extrahieren. - In der '
php.ini
' folgendes einfügensendmail_path = 'C:\PHPext\sendmail\sendmail.exe -t'
- Einstellungen in der '
sendmail.ini
' vornehmensmtp_server=[SMTP-SERVER]
smtp_port=[SMTP-PORT]
smtp_ssl=auto
error_logfile=C:\PHPext\sendmail\error.log
debug_logfile=C:\PHPext\sendmail\debug.log
auth_username=[E-MAIL]
auth_password=[PASSWORT]
;pop3_server=
;pop3_username=
;pop3_password=
;force_sender=[E-MAIL]
(Absender erzwingen; hat bei mir NICHT funktioniert);force_recipient=[E-MAIL]
(Empfänger erzwingen; hat bei mir funktioniert)hostname=localhost
- Testen
Datei 'sendmail.php
' erstellen und folgende Zeile einfügen.‹?php
mail('[E-MAIL]','Betreff: Test','E-Mail Nachricht','From: [E-MAIL]');
Datei im Browser aufrufen und schauen ob die Mail angekommen ist.
ACHTUNG: Der Absender muss eine E-Mail-Adresse des dazugehörigen Accounts sein. Es gibt die Möglichkeit nur Absender-E-Mail-Adressen zu Accounts hinzuzufügen, z.B. bei Google, Yahoo.