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 aktivieren
    extension=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 Einstellungen
    date.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.

  1. 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.
  2. 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.
  3. 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"
  4. 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.
  5. 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
  6. 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\"
  7. Service starten
    CMD als Administrator ausführen.
    net start MySQL[MYSQL SHORT VERSION]
    Falls der Service MySQL[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
  8. 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
  9. 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

  1. MySQL Backup erstellen
    Verzeichnis 'mysql-[MYSQL FULL VERSION]-data' sichern.
  2. Aktuellen Service stoppen
    net stop MySQL[MYSQL SHORT VERSION]
  3. Aktuellen Service löschen
    sc delete MySQL[MYSQL SHORT VERSION]
  4. Aktuelles MySQL löschen und neues MySQL entpacken
    ACHTUNG: Das aktuelle Verzeichnis 'mysql-[MYSQL FULL VERSION]-data' nicht löschen.
  5. 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"
  6. Service starten
    net start MySQL[MYSQL SHORT VERSION]
  7. 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
  8. 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ügen
    sendmail_path = 'C:\PHPext\sendmail\sendmail.exe -t'
  • Einstellungen in der 'sendmail.ini' vornehmen
    smtp_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.