Le applicazioni dedicate all’installazione automatica di Apache sono numerose (Xampp, Mamp, WampServer, EasyPHP, ecc…), più o meno tutte posseggono le stesse caratteristiche, la differenze principali tra una e l’altra si riducono in maggior parte ai sistemi operativi supportati, e più o meno tutte svolgono egregiamente il loro lavoro. Ma se volessimo costruire il nostro ambiente di sviluppo personalizzato decidendo, per esempio, quali versioni di PHP e di MySQL installare?

Mi sono posto la domanda solo poco tempo fa. In seguito a un’installazione pulita di Windows 10, ho deciso come faccio di solito di scaricare e installare Xampp. Arrivando sul sito ho notato che l’ultima versione viene distribuita con MariaDB. Niente da fare, preferisco MySQL, così provo a guardare WampServer: bene questo viene rilasciato con MySQL, ma PHP è in una deludentissima versione 5.5 e a me serve la versione 7 per provare le nuove funzionalità e anche perché si dice che incrementi notevolmente le prestazioni.

Quindi decido di installare manualmente quello che mi serve per creare un web server locale: Apache e le ultime versioni di PHP e MySQL.

 

Installare Apache

Apache HTTP Server Project non fornisce i file binari di Apache per Windows, solo codice sorgente, offre però dei siti alternativi dai quali scaricare i binari, come Apache Lounge.

Effettuare il download scegliendo il file in base all’architettura del proprio sistema operativo (avendo un SO a 64 bit io ho scelto il file httpd-2.4.18-win64-VC14.zip) ed estrarlo nella cartella root C:\ del dispositivo.

Come suggerisce il file contenuto all’interno dell’archivio installiamo Visual C++ Redistributable for Visual Studio 2015 necessario al funzionamento di Apache su Windows, lanciando l’eseguibile appena scaricato.

Aprire un Prompt dei comandi, spostarsi all’interno della directory C:\Apache24\bin ed eseguire il file httpd.exe all’interno di essa.

cd C:\Apache24\bin
httpd.exe

Per ora ignoriamo l’avvertimento che dice Could not reliably determine the server’s fully qualified domain name, apriamo un browser e andiamo all’indirizzo http://localhost/

Il messaggio It works! conferma che l’installazione di Apache è andata a buon fine.

Apache It works!

Fermiamo Apache digitando Ctrl+c sulla finestra di Prompt dei comandi aperta in precedenza.

Correggiamo il warning scritto sopra: per farlo apriamo con un editor di testo il file di configurazione di Apache C:\Apache24\conf\httpd.conf decommentiamo la linea ServerName www.example.com:80 rimuovendo il simbolo # davanti ad essa e la cambiamo in ServerName localhost:80

Impostare Apache come servizio, rende più semplice avviare e fermare il server senza interagire con la linea di comando. Per farlo ritorniamo sul Prompt dei Comandi e sempre dalla directory bin dove lo abbiamo lasciato lanciamo il comando httpd.exe -k install

Ora dovremmo essere in grado di gestire Apache direttamente attraverso services.msc di Windows.

 

Windows - services.msc

Installare PHP7

Effettuare il download dei file binari di PHP che corrispondano all’architettura dell’installazione di Apache, quindi x86 per sistemi a 32 bit e x64 per sistemi a 64 bit.

Attenzione: è importante scaricare le versioni Thread Safe affinché PHP venga utilizzato attraverso Apache.

Creare una cartella chiamata PHP in C:\ ed estrarre il contenuto dell’archivio appena scaricato al suo interno. In C:\PHP troviamo il file php.ini-development, rinominarlo in php.ini ed aprirlo con un editor testuale.

Cerchiamo la linea al suo interno la linea extension_dir = "ext" la decommentiamo eliminando il ; che la precede e modifichiamo ext in C:\PHP\ext indicando a PHP dove recuperare i file delle estensioni.

Una serie di linee ; extension= ci indicheranno le estensioni disponibili per questa versione PHP, è possibile attivarle decommentandole.

Cerchiamo e decommentiamo la linea date.timezone = e la modifichiamo in accordo con il nostro fuso orario, in questo caso diventa date.timezone = Europe/Rome

Aggiungiamo le seguenti linee al file C:\Apache24\conf\httpd.conf configurando Apache per lavorare con PHP.

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>

Riavviamo Apache per rendere effettiva la configurazione.

Per effettuare un test verificando che tutto sia settato al meglio possiamo  creare un file chiamato info.php dentro la cartella C:\Apache24\htdocs e collegarci con un browser all’indirizzo http://localhost/info.php

Una schermata simile alla seguente confermerà la corretta configurazione di PHP, restituendo informazioni sulla sua installazione, sulle estensioni attivate e sul sistema in generale.

phpinfo

 

Installare MySQL

Scaricare l’installer ed eseguire il file .msi. Un wizard ci guiderà attraverso la configurazione di MySQL. Il mio consiglio è di installare anche MySQL come servizio in modo da poterne controllare l’avvio attraverso services.msc di Windows come abbiamo fatto per Apache.

Condividi: Installazione manuale di Apache, PHP7 e MySQL: un Web Server locale su Windows

  1. Ciao complimenti per la guida. Ho seguito passo passo tutta la procedura ma Con php 7 non riesco a collegarmi al database MySQL con il metodo mysqli_connect() perché non lo riconosce. C’è un modo per far riconoscere le funzioni mysqli?grazie

    1. Ciao Ilaria, grazie per i complimenti!
      Nel tuo file php.ini, dovresti riuscire a trovare un blocco di istruzioni che iniziano con ;extension=. Trova la linea ;extension=php_mysqli.dll, decommentala e riavvia i servizi apache e mysql.

      Come va ora?

      Ripeti questa operazione per ogni modulo di estensione che desideri attivare.

    1. Riesci a mandarmi una email all’indirizzo mkay[at]batysbase[dot]com riportando l’errore che visualizzi e tutti gli altri dettagli?
      Hai modificato il percorso delle estensioni in C:\PHP\ext?
      Navigando nella cartella C:\PHP\ext riesci a trovare l’estensione php_mysqli.dll?
      Se provi una connessione con mysql_connect() invece che che con mysqli_connect() funziona?
      Scrivimi quante più indicazioni possibili, grazie.

  2. ciao, sono deciso di passare dalla versione di Apache 2.2.22 alla versione x64 2.4. Ho letto i cambiamenti dei comandi nel file httpd.conf. puoi darmi qualche spunto? ti ringrazio

    1. Ciao Roby,
      puoi trovare la documentazione necessaria alla migrazione sul sito ufficiale di Apache in particolare a questo link.
      Anche Digital Ocean ha creato una guida per la migrazione, in genere le loro guide sono scritte abbastanza bene.
      Se cerchi risorse in italiano, francamente non saprei dove indirizzarti. In ogni caso, è più semplice cercare risposte relative a dubbi specifici.

  3. Ciao! Complimenti per la guida, ho seguito la procedura d’installazione passo passo ma non capisco perchè non mi da la schermata dell’info.php sul browser. È un problema di estensioni?

    1. Ciao Orazio, il problema di estensioni, lo escluderei a priori… Faccio fatica senza maggiori dettagli ad indicarti una strada da seguire per risolvere il problema, tantomeno una soluzione. Prova a scrivermi in privato all’indirizzo mkay[at]batysbase[dot]com descrivendo con maggiore chiarezza eventuali errori del browser e allegando il file di log degli errori di Apache.

  4. Sto provando ad installare MySQL Server 5.7.16 su WIN7 ma mi compare il seguente messaggio di errore: “1: Download of package ‘MySQL Server 5.7.16’ failed with message No valid download found for product MySQL Server 5.7.16

    1. Ciao Renato, ho provato ad effettuare il download dell’installer tramite il link indicato nell’articolo e non mi sembra che ci siano problemi. In ogni caso, la gestione dei download delle varie versioni del software è affidata interamente alla casa di produzione dello stesso. Per questo tipo di problemi, ti consiglio di rivolgerti direttamente a Oracle.

  5. Ciao, complimenti per la guida, precisa e dettaglia.

    Mi sai dire come mai non mia creato il file info.php nella directory C:\Apache24\htdocs.

    Ciao, grazie.

      1. Ok, si scusami, lo hai anche scritto, adesso riprovo i passaggi di Php, perché o provato a crearlo ma collegandomi mi dava la pagina bianca.

  6. Ciao! Ottima guida!
    Ho un problemino: il mio script è realizzato tutto con i comandi mysql e non mysqli. Quando eseguo lo script mi restituisce “deprecated… ecc…”. Ho decommentato la riga extension=php_mysql.dll ma mi da sempre errore. Non vorrei riscrivere tutto il codice… c’è una soluzione? Grazie!

    1. Ciao Stefano, non so esiste una soluzione a questo problema e comunque non la conosco. Le funzioni mysql di php non sono più supportate dalla versione 5.5. Penso che la soluzione più semplice sia sostituire le funzioni mysql con mysqli o pdo_mysql.

      1. Grazie. L’avevo pensato anche io, ma riscrivere gran parte di codice non sarà una passeggiata… comunque io ho scritto il codice su server Apache di Aruba e usa php 5,6 ma la funzione mysql è pienamente supportata… strano!

  7. buongiorno,

    invece di utilizzare mysql volevo utilizzare sqlserver, puoi per cortesia aiutarmi?
    grazie e complimenti per la guida

    Ame

  8. Ciao,
    ho seguito la tua guida. Direi perfetta. Ma ho scaricato il phpBB forum e una volta lanciata l’installazione al secondo step “Verifica requisiti” dice:

    Database supportati
    Devi supportare almeno un database compatibile all’interno di PHP. Se nessun modulo database viene visualizzato come disponibile dovresti contattare il tuo fornitore o esaminare la documentazione di installazione PHP relativa per avere dei suggerimenti.

    Forse ho dimenticato di far puntare PHP a MySql appena installato per ultimo? E quale mi consigli MySqlli o MySql classico?
    Grazie
    Cordialmente
    Cristian

  9. Ciao, Apache non mi si avvia dopo aver inserito nel file httpd.conf il codice seguente:
    LoadModule php7_module C:/PHP/php7apache2_4.dll

    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir “C:/PHP”

    Potresti aiutarmi? Grazie.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.