Cookie

Avviare un webserver velocemente con PHP

Pubblicato da TheJoe il

Tempo di lettura stimato: 3 minuti

Ieri non ero a casa… e mi sono ricordato di avere un file importante nel mio NAS, a casa. Posso accedere al mio NAS tramite la VPN che ho attivato, ma il documento si trova in un percorso che in quel momento non ricordavo, invece tra le poche cose che mi ricordavo c’è che il nome del file era un nome progressivo generico, quindi poco utile nel caso dovessi cercarlo a riga di comando. Che fare?

PHP è un linguaggio di programmazione dalle molteplici funzionalità. Benché io non sappia programmare in PHP, mi sono ricordato di una funzione che mi è stata molto utile in questo caso. Si tratta di un comando da terminale che permette l’avvio di un server web con interprete PHP abilitato. Non dobbiamo installare Apache, Nginx o altro… basterà PHP.

Non ci credi?

Beh, intanto iniziamo a installare l’ultima release di PHP (prendiamo come esempio una distribuzione Debian o derivata (ma PHP è installabile su qualsiasi distribuzione):

$ sudo apt install php8

Al termine dell’installazione avremo il nostro PHP installato. Controlliamo la versione con il comando seguente:

$ php --version
PHP 8.0.30 (cli) (built: Aug 23 2023 12:00:00) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies

Bene: PHP è installato ed è pronto per essere utilizzato. Da notare che non abbiamo installato alcun server web (Apache, Nginx o altro), ma solo l’interprete PHP.

Ora avviamo il server di sviluppo con un singolo comando:

# php -S 0.0.0.0:4000

Questo comando (eseguito come amministratore) apre a tutte le connessioni in entrata sulla porta 4000 nella directory in cui ci troviamo. Andiamo sul browser e digitiamo l’IP del server. Vediamo se funziona:

Un errore 404 not found. Controlliamo il terminale:

[Sat Jan 27 17:27:42 2024] PHP 8.0.30 Development Server (http://0.0.0.0:4000) started
[Sat Jan 27 17:27:44 2024] xxx.xxx.xxx.xxx:49893 Accepted
[Sat Jan 27 17:27:44 2024] xxx.xxx.xxx.xxx:49893 [404]: GET / - No such file or directory
[Sat Jan 27 17:27:44 2024] xxx.xxx.xxx.xxx:49893 Closing

Dal terminale vediamo il classico debug di ciò che sta accadendo sul browser. Ho inoltrato una richiesta per la directory radice “/“. Non è andata a buon fine (perché non ho un file index.php in quella directory), ma non mi interessa perché il server si è avviato e l’errore 404 significa che sta funzionando come dovrebbe.

Guarda qui:  Informazioni hardware su Linux

Vorrei invece elencare il contenuto della directory come in un repository e ricorsivamente tutte le sottodirectory. Cercando tra le risorse online trovo un piccolo progetto ospitato su GitHub: Tiny File Manager. Si tratta per l’appunto di un singolo file PHP che elenca il contenuto della directory in cui si trova e in modo ricorsivo tutte le directory figlie. Da notare che supporta due differenti autenticazioni (con e senza privilegi amministrativi) e supporta l’upload e il download dei file. Il progetto è ben documentato, l’installazione è semplice e il risultato è assicurato. Ha qualche piccola dipendenza:

$ sudo apt install php8-fileinfo php8-iconv php8-zip php8-tar php8-mbstring

Considerazioni finali

Non l’ho ancora scritto da nessuna parte, ma spero sia chiaro che questa procedura per avviare velocemente un webserver dovrebbe essere utilizzata solo in LAN e mai esposta al traffico internet, tanto meno utilizzata su una qualsiasi realtà aziendale per produzione. Diciamo che si possono dormire sonni relativamente tranquilli se viene utilizzata su una VPN.

Mi pare si potesse fare la stessa cosa, ma senza interprete PHP con Python… devo controllare.


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

0 commenti

Lascia un commento

Segnaposto per l'avatar

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.