Server PHP sul computer locale?


161

Sto cercando di costruire un sito PHP e voglio testare i miei file PHP senza caricarli sul mio host. Fondamentalmente testarli sul mio computer prima di caricarli. Come lo faccio?


1
usa XAMPP e installa il server PHP. a volte se skype utilizza le porte 80 e 443, il server apache non verrà avviato. La soluzione completa è fornita qui feelzdroid.com/2015/12/install-php-server-local-machine.html
Naruto

Risposte:



380

PHP 5.4 e versioni successive hanno un web server integrato in questi giorni.

È sufficiente eseguire il comando dal terminale:

cd path/to/your/app
php -S 127.0.0.1:8000

Quindi nel tuo browser vai http://127.0.0.1:8000e boom, il tuo sistema dovrebbe essere attivo e funzionante. (Deve esserci un file index.php o index.html per farlo funzionare.)

È inoltre possibile aggiungere un semplice router

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    require_once('resolver.php');
}
?>

E quindi esegui il comando

php -S 127.0.0.1:8000 router.php

Riferimenti:


9
Nel caso qualcuno si chiedesse, il -S e un riferimento ad altri comandi possono essere trovati al link qui sotto. In particolare, -S significa "Esegui con server Web incorporato". php.net/manual/en/features.commandline.options.php
calipoop

ma per quanto riguarda i database in cui dovrebbe avere spazio per essere archiviati!
Yousef Altaf,

1
@YousefAltaf l'OP non specifica il tempo o non ha voluto un database da utilizzare. Hanno chiesto un server PHP e questo è semplicemente un server PHP. Se vuoi eseguire un server MYSQL o PostGres Server, questa sarebbe un'altra domanda e puoi configurare la tua applicazione PHP per utilizzare detto server. Anche per scopi di sviluppo rapido dovrebbe fare un DB SQLITE.
GardenRouteGold

1
PHP built-in server web non supporta richiesta paralleli: The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.. Ciò può causare alcuni problemi di prestazioni.
Vikyd,

1
@vikyd questo non è per lo sviluppo completo di un'applicazione, è solo un modo rapido per testare / eseguire il debug di funzionalità o codificare IMHO.
GardenRouteGold

39

Questo è un modo semplice e sicuro per eseguire localmente il tuo server php:

php -S 0.0.0.0:<PORT_NUMBER>

Dove PORT_NUMBER è un numero intero compreso tra 1024 e 49151

Esempio: php -S 0.0.0.0:8000

Appunti:

  1. Se si utilizza localhostpiuttosto che 0.0.0.0si può verificare un errore di connessione rifiutata.

  2. Se si desidera rendere il server Web accessibile a qualsiasi interfaccia, utilizzare 0.0.0.0.

  3. Se una richiesta URI non specifica un file, vengono restituiti index.php o index.html nella directory specificata.

Dato il seguente file (router.php)

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    echo "<p>Welcome to PHP</p>";
}
?>

Esegui questo ...

php -S 0.0.0.0:8000 router.php

... e naviga nel tuo browser su http: // localhost: 8000 / e verrà visualizzato quanto segue:

Welcome to PHP

Riferimento:

Web server integrato


4
Grazie per il suggerimento su 0.0.0.0, che soluzione magica è stata - dovrebbe essere inclusa nella risposta accettata o qualcosa del genere ...
calipoop

14

Uso spesso il seguente comando per girare il mio framework PHP Laravel:

$ php artisan serve --port=8080
or
$ php -S localhost:8080 -t public/

Nel comando sopra: - Artisan è l'interfaccia della riga di comando inclusa in Laravel che usa serve per chiamare il server php integrato

Per eseguire con il server Web incorporato.

 php -S <addr>:<port> -T

Qui,
-S: passa a Esegui con server Web incorporato.
-T: consente di specificare la radice del documento per il server Web incorporato.


8

Io uso WAMP . Una semplice procedura guidata di installazione, tonnellate di moduli per Apache e PHP preconfigurati e facili da accendere e spegnere per adattarsi alla configurazione remota.


7

Se desideri uno stack di sviluppo locale per tutti gli usi per qualsiasi sistema operativo in cui puoi scegliere tra diverse versioni di server PHP, MySQL e Web e non hai paura di usare Docker, potresti scegliere devilbox .

Devilbox è uno stack PHP dockerizzato moderno e altamente personalizzabile che supporta LAMP e MEAN completi e funziona su tutte le principali piattaforme. L'obiettivo principale è passare facilmente e combinare qualsiasi versione richiesta per lo sviluppo locale. Supporta un numero illimitato di progetti per i quali vhosts e record DNS vengono creati automaticamente. E-mail catch-all e strumenti di sviluppo popolari saranno anche al tuo servizio. La configurazione non è necessaria, poiché tutto è preimpostato con l'hosting virtuale di massa.

Metterlo in funzione è piuttosto semplice:

# Get the devilbox
$ git clone https://github.com/cytopia/devilbox
$ cd devilbox

# Create docker-compose environment file
$ cp env-example .env

# Edit your configuration
$ vim .env

# Start all containers
$ docker-compose up

devilbox

link:





1

Usa Apache Friends XAMPP . Configurerà il server HTTP Apache, PHP 5 e MySQL 5 (per quanto ne so, probabilmente ce n'è ancora di più). Non è necessario sapere come configurare apache (o alcuno dei moduli) per usarlo.

Avrai una directory htdocs che Apache servirà (accessibile da http: // localhost / ) e dovresti essere in grado di inserire lì i tuoi file PHP. Con la mia installazione, è su C: \ xampp \ htdocs.


1

Se hai una macchina locale con il software giusto: server web con supporto per PHP, non c'è motivo per cui non puoi fare come descrivi.

Lo sto facendo al momento con XAMPP su una macchina Windows XP e (a casa) con Kubuntu e uno stack LAMP.



1

AppServ è un piccolo programma in Windows per eseguire:

  • Apache
  • PHP
  • MySQL
  • phpMyAdmin

Ti darà anche un pulsante di avvio e arresto per Apache. Che trovo molto utile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.