Come posso installare Apache con il supporto PHP e il server MySQL su Windows senza utilizzare pacchetti pronti per l'uso come WAMPServer o XAMPP?
Come posso installare Apache con il supporto PHP e il server MySQL su Windows senza utilizzare pacchetti pronti per l'uso come WAMPServer o XAMPP?
Risposte:
Per prima cosa, ti consiglio di leggere le Note specifiche sulla piattaforma di Apache per Windows - spiega alcune funzionalità specifiche di Windows come l'esecuzione come servizio che non hai su altri sistemi operativi e che probabilmente non hai mai usato prima.
Come menzionato in queste note specifiche della piattaforma, Apache non fornisce file binari per Windows, tuttavia hanno collegamenti a diversi siti di terze parti che forniscono file binari, ad esempio Apache Lounge .
Da quel sito Web, possiamo scaricare la versione a 32 bit (win32) o quella a 64 bit (Win64) - se il tuo sistema operativo è a 64 bit, dovresti sempre provare a installare versioni di software a 64 bit, ma tieni presente che Dovrai utilizzare anche i moduli a 64 bit, ciò significa che se hai solo un modulo a 32 bit, scarica l'Apache a 32 bit.
Ecco la versione che ho usato per scrivere questo: Apache 2.4.10 Win64 . L'ultima versione dell'ultimo aggiornamento di questa risposta: Apache 2.4.38 Win64 (guarda la data di modifica in fondo al post).
Una volta scaricato, basta estrarre la Apache24
cartella nella radice del disco rigido, in modo da avere un percorso simile C:\Apache24\bin
.
Apri una finestra della riga di comando (Windows + R e digita, cmd
quindi premi Invio), modifica la directory in C:\Apache24\bin
ed esegui httpd.exe
, normalmente non dovrebbe stampare alcun errore.
Se viene visualizzata una finestra di dialogo di errore che indica che MSVCR110.dll
manca sul sistema, è necessario installare il ridistribuibile di Visual C ++ per Visual Studio 2012 - come sempre, quando richiesto, selezionare la versione di bit appropriata: vcredist_x86.exe
per i sistemi a 32 bit e vcredist_x64.exe
per 64 -Bit quelli.
Se ricevi un errore che dice che non può essere associato alla porta 80, controlla se un'altra applicazione utilizza quella porta - anche Skype è noto per usare le porte 80 e 443 per impostazione predefinita; deseleziona "Usa le porte 80 e 443 come alternative per le connessioni in entrata" nelle sue impostazioni di connessione avanzate , riavvia Skype per applicare le modifiche, quindi dovresti essere in grado di avviare Apache senza problemi.
Un avvertimento come Could not reliably determine the server's fully qualified domain name
può essere ignorato per ora.
Windows Firewall potrebbe richiedere di consentire ad Apache di comunicare su reti specifiche, ti consiglio di utilizzare le impostazioni predefinite: consentilo su reti domestiche e di lavoro, ma non su reti pubbliche / non attendibili.
Quindi, apri un browser e cerca http://localhost
, se vedi una pagina che dice It works !
che significa che l'installazione di Apache funziona.
Ora puoi interrompere l'Apache attualmente in esecuzione premendo Ctrl + C nel prompt dei comandi.
Se ricevi un avviso di non essere in grado di determinare il nome di dominio completo del sistema, correggilo modificando C:\Apache24\conf\httpd.conf
e modificando la ServerName
variabile (dovrebbe essere già presente in un commento, basta decommentarlo e cambiarlo):
ServerName <yourhostname>
Sostituisci <yourhostname>
con il nome host del sistema o localhost
.
Infine, se vuoi eseguire il server automaticamente all'avvio del sistema (anche se nessuno accede), dovrai eseguirlo come servizio - in un nuovo prompt dei comandi con privilegi elevati (come amministratore), digita:
httpd.exe -k install
Ecco fatto, ora hai un nuovo servizio in Servizi (Windows + R, quindi digita "services.msc" quindi premi Invio) denominato "Apache2.4" che puoi controllare come qualsiasi altro servizio Windows.
localhost
solo - facoltativoSe stai configurando questo per scopi di sviluppo, vuoi assicurarti che nessuno tranne te possa accedervi, il tuo firewall dovrebbe già occuparsene ma aggiungiamo un altro livello di sicurezza dicendo ad Apache di accettare richieste dal locale solo macchina.
Apri il file di configurazione di Apache C:\Apache24\conf\httpd.conf
, cerca il blocco di directory predefinito <Directory "c:/Apache24/htdocs">
.
Alla fine, se ci fosse, dovrebbe esserci una linea Require all granted
, questo significa che chiunque può accedere a questo server. Facciamo quello Require local
che consente l'accesso solo dal computer locale.
Inoltre, puoi dire ad Apache di collegarsi solo all'interfaccia di loopback, in questo modo anche se il tuo firewall e le direttive di controllo degli accessi sopra menzionati falliscono, il server non sarà ancora aperto a tutta Internet.
Per questo, individuare la Listen
direttiva (per impostazione predefinita è impostata su 80
) e modificarla come segue:
Listen 127.0.0.1:80
Listen [::1]:80
La prima riga si spiega da sé, la seconda è la prima equivalente a IPv6, le parentesi sono usate nella notazione IPv6 per separare l'indirizzo e la porta.
Salva il file, se stai già eseguendo il server, riavvialo per tenere conto delle nostre modifiche e ora localhost
ha accesso solo , tutti gli altri riceveranno un 403 Forbidden
.
Ti suggerisco di leggere la documentazione ufficiale di PHP sull'installazione su sistemi Windows.
Scarica gli ultimi binari PHP dalla pagina di download ufficiale di PHP per Windows , scegli la versione thread-safe che corrisponde alla versione bit dell'installazione di Apache (x86 per 32-Bit, x64 per 64-Bit).
La versione non thread-safe è solo quando eseguita come binario CGI - maggiori informazioni qui .
La versione che ho usato è questa: PHP 5.6.2 VC11 x64 Thread Safe . L'ultima versione dell'ultimo aggiornamento di questa risposta: PHP 7.3.3 VC15 x64 Thread Safe (guarda la data di modifica in fondo al post).
Crea una PHP
cartella vuota alla radice del tuo disco rigido ed estrai lì l'archivio precedentemente scaricato, dovresti avere un percorso simile C:\PHP\ext
, altrimenti hai fatto qualcosa di sbagliato.
In C:\PHP
, rinominare php.ini-production
o php.ini-development
(a seconda di ciò che si desidera) in php.ini
.
Apri quel php.ini
file, cerca extension_dir = "ext"
e decommenta quella riga (rimuovi il primo ;
). Questo imposta la directory di estensione predefinita su ext
(che si risolve C:\PHP\ext
ed evita di dover anteporre ext/
manualmente a tutti i percorsi dell'estensione come nelle versioni precedenti di questo post.
Ora configura Apache per usare quel PHP, modificando C:\Apache24\conf\httpd.conf
- dopo tutte le LoadModule
righe, aggiungi quanto segue:
(Il seguito è per PHP 7 solo )
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>
(Il seguente è per PHP 5 solo )
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>
Ora prova ad avviare Apache manualmente aprendo C:\Apache24\bin
ed eseguendo un prompt dei comandi httpd.exe
- se non vedi errori, significa che il tuo file di configurazione è valido e PHP molto probabilmente funziona .
Puoi testare la tua installazione di PHP creando un file simile info.php
a <?php phpinfo();
inside e andando a http://localhost/info.php
: dovresti vedere un bel po 'di informazioni sul tuo sistema, sulla tua installazione di PHP e su tutti i suoi moduli. Se ricevi qualcos'altro come un "Errore interno del server", significa che qualcosa non va.
Ora puoi terminare il tuo attuale processo Apache (Ctrl + C nella console) e avviare il servizio: la parte seguente non interagisce con Apache e può essere eseguita con il server già avviato.
Composer è uno strumento per la gestione delle dipendenze in PHP, come un gestore di pacchetti. Permette di installare facilmente pacchetti PHP e persino interi framework.
Composer richiede che l'estensione PHP OpenSSL sia abilitata, quindi abilitiamola in C:\PHP\php.ini
.
Usa la funzione di ricerca del tuo editor di testo per cercare php_openssl.dll
, dovrebbe esserci già una riga commentata, basta decommentare quella riga.
Ora scarica il programma di installazione di Windows di Composer dalla loro pagina di download o usa semplicemente questo link diretto .
Seguire le istruzioni, quando viene richiesto il percorso per PHP, navigare C:\PHP
e selezionare php.exe
.
Ecco fatto, Composer è ora installato a livello di sistema e può essere utilizzato da qualsiasi luogo: puoi provarlo, basta aprire un nuovo prompt dei comandi (non puoi usarne uno che è già aperto poiché deve leggere la nuova PATH
variabile impostata da Composer installatore) e digitare composer
.
Dovresti ottenere un bel logo ASCII-art e qualcosa del genere:
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28
Se vuoi accedere al tuo database MySQL da PHP, dovrai abilitare le estensioni che ti consentono di farlo, come php_mysqli
o php_pdo_mysql
- ti consiglio di abilitarle entrambe.
Apri il file di configurazione di PHP C:\PHP\php.ini
nel tuo editor di testo e cerca php_mysqli
o php_pdo_mysql
- dovrebbero già essere lì, decommentarli.
Fatto, ora puoi accedere a qualsiasi database MySQL usando mysqli
o PDO
.
Nella pagina di download del programma di installazione di MySQL scaricare il programma di installazione Web mysql-installer-web-community-xxxxx.msi
.
Ho usato mysql-installer-web-community-5.6.21.1.msi. L'ultima versione dell'ultimo aggiornamento di questa risposta: mysql-installer-web-community-8.0.15.0.msi (guarda la data di modifica in fondo al post).
Il programma di installazione installerà automaticamente la versione appropriata (32-Bit o 64-Bit) a seconda del sistema, anche se la versione di MySQL non deve corrispondere a quella di Apache e PHP, ma è comunque utile utilizzare la versione a 64 bit del il sistema lo supporta per sfruttare più di 3 GB di RAM , il che è abbastanza importante poiché i server di database tendono ad usare molta RAM.
Segui i passaggi nel programma di installazione, se lo stai installando per lo sviluppo, allora Developer default
sarà la tua migliore opzione, installerà anche MySQL Workbench che è un client GUI nativo, evitando così di dover installare strumenti basati sul web lenti come PHPMyAdmin se non si ha familiarità con l'uso del client della riga di comando.
Una volta installato tutto, il programma di installazione richiederà alcuni valori di configurazione di base, consiglio di disabilitare "Apri porta firewall per l'accesso alla rete" a meno che non si desideri accedere al database da un'altra macchina sulla rete.
Imposta la password di root: se è solo a scopo di sviluppo e il firewall blocca le connessioni in entrata dalla rete, non è necessaria una password complessa.
Infine, puoi disabilitare l'inutile MySQL Notifier facendo clic con il pulsante destro del mouse sull'icona nella barra delle applicazioni, andando in Azioni -> Opzioni, quindi deseleziona la Run at Windows Startup
casella di controllo e applica. Ciò ti farà risparmiare qualche MB di RAM ed eviterà di rallentare il tuo computer all'avvio.
E il gioco è fatto, ora hai un server WAMP completamente funzionante che funziona come un servizio e non dipende da nessun utente (accessibile anche se nessuno ha effettuato l'accesso).
Si noti che non ho idea della sicurezza di questo, per scopi di sviluppo direi che è abbastanza sicuro poiché il tuo firewall dovrebbe bloccare le connessioni in entrata sia per Apache (porta 80 o 443) che MySQL (porta 3306).
Questo è stato testato su un'installazione di Windows 7, dovrebbe anche funzionare bene su Vista, Windows 8 e possibilmente su Windows Server 2008/2012 - non esitare a commentare e / o a sottoporre a votazione in caso contrario.
MSVCR110.dll
è apparso l' errore (sulla versione corrente di Apache) ho finito per installare Visual C ++ Redistributable 2010 SP1. Successivamente ho ricevuto un altro errore sul file VCRUNTIME140.dll
, che mi ha richiesto di installare Visual C ++ ridistribuibile per Visual Studio 2015.
Le istruzioni nella risposta sopra funzionano perfettamente a partire da luglio 2017, tuttavia, se si desidera utilizzare PHP 7, è necessario aggiungere le seguenti righe C:\Apache24\conf\httpd.conf
, anziché quelle in quella risposta (che funzionano solo per PHP 5) [Aggiungere quanto segue dopo tutte le LoadModule
righe] :
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>
Assicurarsi che tutti i percorsi siano corretti. Se non hai php7apache2_4.dll
nella tua directory PHP, probabilmente hai scaricato il pacchetto sbagliato.