Installazione di IIS

  • Installa le funzionalità di Windows
    Pannello di controllo -> Tutti gli elementi del pannello di controllo -> Programmi e funzionalità -> Abilita o disabilita le funzionalità di Windows
    Seleziona Internet Information Services
    Aggiungi funzionalità CGI
  • Test di IIS
    Richiama localhost nel browser.
  • IIS Log Files
    C:\inetpub\logs\LogFiles\W3SVC[ID DELLA PAGINA]\u_extend1.log

Web Platform Installer - Altri strumenti utili

Le app più diffuse possono essere facilmente installate con Web Platform Installer. Se ci sono errori, tuttavia, questi sono generalmente molto difficili da risolvere perché i messaggi non dicono molto. Personalmente, non utilizzo lo strumento per installare applicazioni, tranne che per dare una rapida occhiata alle novità. Il Web Platform Installer può essere trovato sotto Azioni in Gestione IIS 'Ottieni nuovi componenti della piattaforma web', questo collegamento ti porta al download corretto oppure puoi cercare direttamente utilizzando un motore di ricerca. Dopo l'installazione, il programma di installazione della piattaforma Web viene visualizzato in Gestione IIS.

Impostazioni IIS

  • Editor di configurazione
    Sezione -> system.web/sessionState -> aumenta il timeout

Risolvi i problemi di IIS

  • Riavvia IIS
    Apri il prompt dei comandi di Windows (cmd.exe = CMD) come amministratore.
    iisreset (È uguale a 'Riavvia' in Gestione IIS in Azioni.)
  • Avvia IIS
    Apri CMD come amministratore.
    iisreset /start (È uguale a 'Start' in Gestione IIS in Azioni.)
  • Ferma IIS
    Apri CMD come amministratore.
    iisreset /stop (È uguale a 'Stop' in Gestione IIS in Azioni.)
  • Nessun diritto di accesso
    Concedi all'utente 'IIS_IUSRS' o all'utente corrente l'accesso completo alla cartella 'inetpub'.
  • Reimposta l'assegnazione del gestore in modo che vengano visualizzate le versioni PHP di livello superiore
    Apri siti nodo -> seleziona pagina -> apri assegnazione gestore -> in Azioni, fai clic su 'Reimposta su genitore' a destra.
  • Rimuovi le versioni PHP
    Rimuovi le versioni PHP nel gestore IIS (assegnazione del gestore e impostazioni FastCGI).
    Elimina le versioni PHP rimosse nel file 'C:\Windows\System32\inetsrv\config\applicationHost.config', se disponibile.
    Elimina le versioni PHP rimosse nello stesso file nella cartella 'inetpub', se disponibile.

Consenti a IIS di interpretare i file .htaccess di Apache

  • Installa le funzionalità di Windows
    Pannello di controllo -> Tutti gli elementi del pannello di controllo -> Programmi e funzionalità -> Abilita o disabilita le funzionalità di Windows
    Aggiungi la funzionalità delle estensioni ISAPI (per Helicon ISAPI_Rewrite 3 Fullversion, Version 3.1.0078; soddisfa le attività di 'Apache Web Server Rewrites')
    Aggiungi la funzione di filtro ISAPI (questo è un lettore .htaccess; poiché .htaccess è un file Linux)
  • Installa Helicon ISAPI_Rewrite
    Seleziona la versione richiesta su https://www.helicontech.com/isapi_rewrite/. Quindi scarica e installa.
    Alla fine, aggiungi le informazioni di registrazione al file 'httpd.conf', se disponibile.

PHP per IIS

Quando si utilizza PHP come FastCGI con IIS, prendere le versioni Non-Thread Safe (NTS) di PHP. Poiché il modulo FastCGI si occupa della gestione delle richieste in arrivo in parallelo.

  • Installa PHP Manager per IIS
    Cerca 'PHP Manager for IIS [IIS VERSION]' in un motore di ricerca.
  • Imposta le versioni PHP
    Scarica la versione PHP richiesta da https://windows.php.net/download/.
    Estrai in una cartella che hai creato tu stesso, ad es. 'C:\PHP'.
    Apri Gestione IIS -> seleziona il primo nodo -> PHP Manager -> Registra nuova versione PHP -> seleziona file -> OK
  • Installa 'Microsoft Visual C ++ Redistributable' richiesto per PHP
    Microsoft Visual C++ 2012 Redistributable (x86 o x64) per VC11.
    Microsoft Visual C++ 2015-2019 Redistributable (x86 o x64) per VC14, VC15 o VS16.
  • Test
    Nella cartella 'C:\inetpub\wwwroot' creare il file 'info.php' e inserire la seguente riga.
    ‹?php phpinfo(); ?›
    Richiama localhost/info.php nel browser.
  • Configurazione PHP
    Apri il file 'php.ini'.
    Attiva le estensioni necessarie
    extension=php_mysql.dll (Estensione per database MySQL; questa estensione è obsoleta ed è stata rimossa a partire da PHP 7)
    extension=php_mysqli.dll (Estensione per database MySQL)
    extension=php_mbstring.dll (Estensione per funzioni stringa multibyte; per esempio mb_strlen)
    extension=php_mcrypt.dll (Estensione per decrittografia e crittografia; per esempio mcrypt_encrypt)
    extension=php_curl.dll (Estensione per sessioni cURL; per esempio curl_close)
    Impostazioni necessarie
    date.timezone = "Europe/Berlin"
    Se la porta MySQL è diversa, utilizzare la parola chiave Multiple MySQL Server
    [MySQL] (obsoleto, rimosso da PHP 7)
    mysql.default_port = 3307
    o
    [MySQLi]
    mysqli.default_port = 3307
    Riavvia IIS dopo le modifiche e controlla 'info.php'.
  • Versioni PHP supportate
    https://www.php.net/supported-versions.php
  • Requisiti di installazione PHP ufficiali
    https://www.php.net/manual/de/install.windows.requirements.php
  • File di errore
    C:\Windows\Temp\php-[PHP VERSION]_errors.log

ImageMagick per PHP su IIS

  • Controlla le informazioni importanti
    Crea il file 'info.php' e inserisci la riga '‹?php phpinfo(); ?›'. Richiama il file nel browser e verifica quanto segue.
    PHP Version = 7.4.12
    Compiler = MSVC15 (Visual C++ 2017)
    Architecture = x86
    Thread Safety = disabled
  • Scarica il file 'php_imagick.dll' per PHP https://pecl.php.net/package/imagick
    Estrai il file 'php_imagick.dll' nella cartella 'C:\PHP\php-[PHP VERSION]-nts-Win32-[COMPILER]-[ARCHITECTURE]\ext'.
  • Aggiungi l'estensione PHP
    Apri il file 'php.ini' e inserisci le seguenti righe alla fine.
    [PHP_IMAGICK]
    extension=php_imagick.dll
  • Scarica il pacchetto 'ImageMagick-[IMAGEMAGICK VERSION]-[COMPILER]-[ARCHITECTURE]' da https://windows.php.net/downloads/pecl/deps/
    Aggiungi variabile d'ambiente
    Estrai la cartella dal pacchetto scaricato in una cartella che hai creato tu stesso, ad es. 'C:\PHPext'.
    Variabili d'ambiente -> Variabili di sistema -> Modifica Path -> Aggiungi percorso 'C:\PHPext\ImageMagick-[IMAGEMAGICK VERSION]-[COMPILER]-[ARCHITECTURE]\bin;'
    ATTENZIONE: Solo una variabile d'ambiente è possibile per ImageMagick, se ci sono più voci per versioni differenti ci saranno problemi nel caricamento dei singoli moduli (es. png non è supportato).
    Alternativa alla variabile d'ambiente
    Non preferisco questo metodo e non l'ho ancora testato perché mi piaceva separare i pacchetti. Cambio la variabile d'ambiente a seconda della versione di ImageMagick di cui ho bisogno.
    Estrarre i file DLL dalla cartella 'bin' che inizia con CORE_RL o IM_MOD_RL nella cartella 'C:\PHP\php-[PHP VERSION]-nts-Win32-[COMPILER]-[ARCHITECTURE]'.
  • Controlla i formati supportati
    Richiama 'info.php' e seleziona 'ImageMagick number of supported formats'.
  • Test
    Crea il file 'imagick-test.php' e aggiungi le seguenti righe. Quindi richiamare il file nel browser.
    ‹?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

Con MySQL Installer 'mysql-installer-web-community-[MYSQL VERSION].msi' puoi installare, aggiornare e modificare MySQL.

Più versioni di MySQL

Avvia diverse istanze MySQL come servizi Windows.

  1. Installa MySQL
    Seleziona la versione richiesta da https://dev.mysql.com/downloads/mysql/ e scaricala.
    Decomprimere il file 'mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE].zip' e creare una cartella aggiuntiva 'mysql-[MYSQL FULL VERSION]-data'.
  2. Installa il 'Microsoft Visual C ++ Redistributable Package' richiesto per MySQL
    Installa i pacchetti Microsoft richiesti, se non disponibili.
    Installa Microsoft Visual C++ 2008 Redistributable (x86 o x64) per MySQL 5.5.
    Installa Microsoft Visual C++ 2010 Redistributable (x86 o x64) per MySQL 5.6.
    Installa Microsoft Visual C++ 2013 Redistributable (x86 o x64) per MySQL 5.7.
    Installa Microsoft Visual C++ 2015-2019 Redistributable (x86 o x64) per MySQL 8.0.
  3. Crea file per le impostazioni MySQL
    Crea il file 'my-mysqld[MYSQL SHORT VERSION].ini', ad es. my-mysqld57.ini e inserisci le seguenti righe.
    [client]
    port = 3307 (La porta predefinita per MySQL è 3306, quindi iniziamo con la porta 3307)

    [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. Rimuovi le variabili d'ambiente
    Nel caso di più istanze MySQL, non aggiungere alcuna variabile di ambiente, se sono presenti variabili di ambiente, rimuoverle come segue.
    Variabili d'ambiente -> Variabili di sistema -> Modifica Path -> Rimuovi variabili d'ambiente
    ATTENZIONE: I comandi non sono possibili senza una variabile d'ambiente, ad es. mysql -u root -p.
  5. Inizializza la cartella 'mysql-[MYSQL FULL VERSION]-data'
    MySQL versione 5.6 e precedenti
    Inserisci il contenuto della cartella 'data' del file *.zip.
    MySQL versione 5.7 e successive
    ATTENZIONE: il file *.zip non ha più una cartella 'data'.
    Reinizializza la cartella 'mysql-[MYSQL FULL VERSION]-data'.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --defaults-file="C:\MySQL\my-mysqld[MYSQL SHORT VERSION].ini" --initialize --console (--initialize-insecure = Nessuna password è impostata; Accesso = mysql -u root --skip-password)
    Viene generata una password, non dimenticare di annotarla.
    per esempio "C:\MySQL\mysql-8.0.22-winx64\bin\mysqld" --defaults-file="C:\MySQL\my-mysqld80.ini" --initialize --console
  6. Installa servizio
    Esegui CMD come amministratore.
    ATTENZIONE: Il codice '--defaults-file' deve seguire il nome del servizio.
    "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"
    per esempio "C:\MySQL\mysql-8.0.22-winx64\bin\mysqld" --install MySQL80 --defaults-file="C:\MySQL\my-mysqld80.ini"
    Possibilità alternativa
    Per utilizzare una determinata versione di MySQL, passare alla cartella della versione di MySQL desiderata e quindi eseguire il comando desiderato 'mysql [COMANDO]'.
    cd "C:\MySQL\mysql-[MYSQL VERSION]-win[ARCHITECTURE]\bin\"
    per esempio cd "C:\MySQL\mysql-8.0.22-winx64\bin\"
  7. Avvia il servizio
    Esegui CMD come amministratore.
    net start MySQL[MYSQL SHORT VERSION]
    Se il servizio MySQL[MYSQL SHORT VERSION] non si avvia, controllare il file '* .err' nella cartella 'C:\MySQL\mysql-[MYSQL FULL VERSION]-data'.
    Possibilità alternativa
    Avvia
    il servizio mysqld temporaneo.
    ATTENZIONE: Un servizio MySQL installato non deve essere in esecuzione, altrimenti il nuovo servizio mysqld temporaneo non può essere avviato.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --port=[PORT] --user=[UTENTE] --datadir="C:\MySQL\mysql-[MYSQL FULL VERSION]-data\" --console (--console elenca gli errori)
    per esempio "C:\MySQL\mysql-5.5.59-win32\bin\mysqld" --port=3307 --user=root --datadir="C:\MySQL\mysql-5.5.59-data\" --console
    Chiudi il servizio mysqld temporaneo.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --host=127.0.0.1 --port=[PORT] --user=[UTENTE] --password shutdown
  8. Accesso
    Esegui CMD come amministratore.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysql" --host=localhost --port=[PORT] --user=[UTENTE] --password=[PASSWORD] (Versione completa)
    mysql -h localhost -P [PORT] -u [UTENTE] -p (Versione breve, la password viene richiesta dopo aver eseguito il comando)
    per esempio "C:\MySQL\mysql-5.7.21-win32\bin\mysql" -h localhost -P 3309 -u root -p
  9. Test
    Esegui il seguente comando dopo aver effettuato l'accesso.
    show variables where Variable_name in('hostname','port');

Impostazioni MySQL

  • Autorizzazioni
    L'utente del server MySQL deve essere in grado di leggere il file 'my-mysqld[MYSQL SHORT VERSION].ini'.
  • Tutte le funzioni di mysqld
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --help
  • Mostra porte aperte
    netstat -an
  • Controlla la porta specifica
    netstat -an | find '[PORT]'

Cambia la password di root

  • Accesso
    mysql -h localhost -P [PORT] -u [UTENTE] -p
  • MySQL 5.7.5 e versioni precedenti
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('[PASSWORD]');
  • MySQL 5.7.6 e versioni successive
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[PASSWORD]';

Rimuovere MySQL Windows Service

  • Interrompi servizio
    Esegui CMD come amministratore.
    net stop MySQL[MYSQL SHORT VERSION]
  • Elimina servizio
    sc delete MySQL[MYSQL SHORT VERSION]

Upgrade di MySQL su Windows

  1. Crea backup MySQL
    Salva la cartella 'mysql-[MYSQL FULL VERSION]-data'.
  2. Interrompi il servizio corrente
    net stop MySQL[MYSQL SHORT VERSION]
  3. Elimina il servizio corrente
    sc delete MySQL[MYSQL SHORT VERSION]
  4. Elimina il MySQL corrente ed estrai il nuovo MySQL
    ATTENZIONE: Non eliminare la cartella corrente 'mysql-[MYSQL FULL VERSION]-data'.
  5. Installa un nuovo servizio
    ATTENZIONE: Il codice '--defaults-file' deve seguire il nome del servizio.
    "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"
    per esempio "C:\MySQL\mysql-5.7.21-win32\bin\mysqld" --install MySQL57 --defaults-file="C:\MySQL\my-mysqld57.ini"
  6. Avvia servizio
    net start MySQL[MYSQL SHORT VERSION]
  7. Eseguire l'upgrade
    NON eliminare il file 'ibdata1'. Tutte le tabelle, le password e così via sono contenute nel file 'ibdata1'.
    Se NECESSARIO eliminare 'ib_logfile()' e 'ib_logfile1'.
    Elimina i file '*.err' e '*.pid' se disponibili.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysql_upgrade" -h localhost -P [PORT] -u root -p
    per esempio "C:\MySQL\mysql-5.7.21-win32\bin\mysql_upgrade" -h localhost -P 3309 -u root -p
  8. Arresta e riavvia il server
    net stop MySQL[MYSQL SHORT VERSION]
    net start MySQL[MYSQL SHORT VERSION]

phpMyAdmin

  • Installa phpMyAdmin
    Scarica il pacchetto da https://www.phpmyadmin.net/downloads/.
    Decomprimere tutti i file in 'C:\inetpub\wwwroot\phpmyadmin'.
    Concedi all'utente 'IUSR' l'accesso completo alla cartella 'C:\inetpub' per evitare possibili problemi.
  • Converti phpMyAdmin in IIS in un'applicazione
    Fare clic con il tasto destro su 'phpmyadmin' -> Converti in applicazione -> OK
  • Test
    Chiama localhost/phpmyadmin nel browser.
  • Configura il file 'config.inc.php'
    Crea la cartella 'config' in 'C:\inetpub\wwwroot\phpmyadmin'.
    Chiama localhost/phpmyadmin/setup nel browser.
    Effettuare le impostazioni richieste.
    Memorizza il 'config.inc.php' generato nella cartella 'C:\inetpub\wwwroot\phpmyadmin'.
    Elimina la cartella 'config'.
    Chiama localhost/phpmyadmin nel browser. Finito.

phpMyAdmin impostazioni di esportazione

Seleziono le seguenti opzioni per l'esportazione oltre alle opzioni standard.

  • Combina l'esportazione in una transazione
  • Disabilita il controllo delle chiavi esterne
  • Aggiungi il comando DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER
  • IF NOT EXISTS (meno efficiente, perché gli indici vengono creati durante la creazione della tabella)
  • Lunghezza massima della query creata 999999

Invio di e-mail tramite PHP

Fake sendmail for Windows

  • Scarica 'Fake sendmail for Windows' ed estrailo
    https://www.glob.com.au/sendmail/sendmail.zip
    Estrai l'archivio 'sendmail.zip' nella cartella 'C:\PHPext\sendmail\'.
  • Aggiungi quanto segue in 'php.ini'
    sendmail_path = 'C:\PHPext\sendmail\sendmail.exe -t'
  • Effettua le impostazioni in 'sendmail.ini'
    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=[PASSWORD]
    ;pop3_server=
    ;pop3_username=
    ;pop3_password=
    ;force_sender=[E-MAIL] (Forza mittente; NON ha funzionato per me)
    ;force_recipient=[E-MAIL] (Forza destinatario; ha funzionato per me)
    hostname=localhost
  • Test
    Crea il file 'sendmail.php' e inserisci la seguente riga.
    ‹?php
    mail('[E-MAIL]','Subject: Test','E-mail message','From: [E-MAIL]');
    Richiama il file nel browser e verifica se la posta è arrivata.
    ATTENZIONE: Il mittente deve essere un indirizzo e-mail dell'account associato. È possibile aggiungere solo indirizzi e-mail del mittente agli account, ad es. in Google, Yahoo.