Serwer PHP na komputerze lokalnym?

161

Próbuję zbudować witrynę PHP i chcę przetestować moje pliki PHP bez przesyłania ich do hosta. Zasadniczo testuję je na własnym komputerze przed ich załadowaniem. W jaki sposób mogę to zrobić?

Kozy
źródło
1
użyj XAMPP i zainstaluj serwer PHP. czasami, jeśli skype używa portów 80 i 443, serwer Apache nie uruchamia się. Kompletne rozwiązanie jest dostępne tutaj feelzdroid.com/2015/12/install-php-server-local-machine.html
Naruto

Odpowiedzi:

380

PHP 5.4 i nowsze mają obecnie wbudowany serwer WWW .

Po prostu uruchamiasz polecenie z terminala:

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

Następnie w przeglądarce przejdź do http://127.0.0.1:8000i bum, twój system powinien być uruchomiony. (Aby to zadziałało, musi istnieć plik index.php lub index.html).

Możesz także dodać prosty 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');
}
?>

A następnie uruchom polecenie

php -S 127.0.0.1:8000 router.php

Bibliografia:

GardenRouteGold
źródło
9
W przypadku gdyby ktoś się zastanawiał, -S i odniesienie do innych poleceń można znaleźć pod linkiem poniżej. W szczególności -S oznacza „Uruchom z wbudowanym serwerem WWW”. php.net/manual/en/features.commandline.options.php
calipoop
ale co z bazami danych, w których powinien być przechowywany!
Yousef Altaf
1
@YousefAltaf OP nie określa pogody lub nie chciał, aby baza danych była używana. Poprosili o serwer PHP, a to jest po prostu serwer PHP. Jeśli chcesz uruchomić serwer MYSQL lub PostGres, to byłoby inne pytanie i możesz skonfigurować swoją aplikację PHP do korzystania z tego serwera. Również w przypadku szybkiego programowania powinien wystarczyć SQLITE DB.
GardenRouteGold
1
PHP Wbudowany serwer WWW nie obsługuje żądania równoległego: The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.. Może to spowodować problemy z wydajnością.
vikyd
1
@vikyd to nie znaczy, że dla pełnoprawnego rozwoju aplikacji to tylko szybki sposób na testowanie / debugowanie funkcji lub kodu IMHO.
GardenRouteGold
39

To prosty, pewny sposób na lokalne uruchomienie serwera php:

php -S 0.0.0.0:<PORT_NUMBER>

Gdzie PORT_NUMBER to liczba całkowita od 1024 do 49151

Przykład: php -S 0.0.0.0:8000

Uwagi:

  1. Jeśli używasz localhostzamiast 0.0.0.0, możesz trafić na błąd odrzucenia połączenia.

  2. Jeśli chcesz, aby serwer WWW był dostępny dla dowolnego interfejsu, użyj 0.0.0.0.

  3. Jeśli żądanie URI nie określa pliku, zwracany jest plik index.php lub index.html w podanym katalogu.

Biorąc pod uwagę następujący plik (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>";
}
?>

Uruchom to ...

php -S 0.0.0.0:8000 router.php

... i przejdź w przeglądarce do http: // localhost: 8000 /, a zostanie wyświetlony następujący komunikat:

Welcome to PHP

Odniesienie:

Wbudowany serwer WWW

l3x
źródło
4
Dzięki za wskazówkę dotyczącą 0.0.0.0, jaka to była magiczna poprawka - powinna zostać włączona do zaakceptowanej odpowiedzi czy coś ...
calipoop
14

Często używam następującego polecenia, aby uruchomić mój framework PHP Laravel:

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

W powyższym poleceniu: - Artisan to interfejs wiersza poleceń zawarty w Laravel, który służy do wywoływania wbudowanego serwera php

Działa z wbudowanym serwerem WWW.

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

Tutaj,
-S: Przełącz na uruchomienie z wbudowanym serwerem internetowym.
-T: Przełącz, aby określić katalog główny dla wbudowanego serwera WWW.

Amitesh Bharti
źródło
8

Używam WAMP . Jeden łatwy kreator instalacji, mnóstwo modułów wstępnie skonfigurowanych dla Apache i PHP oraz łatwe do włączania i wyłączania w celu dopasowania do zdalnej konfiguracji.

Chris Sobolewski
źródło
7

Jeśli chcesz uniwersalnego lokalnego stosu programistycznego dla dowolnego systemu operacyjnego, w którym możesz wybierać spośród różnych wersji PHP, MySQL i serwera WWW, a także nie boisz się używania Dockera, możesz wybrać devilbox .

Devilbox to nowoczesny i wysoce konfigurowalny dockerized stos PHP obsługujący pełne LAMP i MEAN i działający na wszystkich głównych platformach. Głównym celem jest łatwe przełączanie i łączenie dowolnej wersji wymaganej do lokalnego rozwoju. Obsługuje nieograniczoną liczbę projektów, dla których vhosty i rekordy DNS są tworzone automatycznie. E-maile do przechwytywania i popularne narzędzia programistyczne również będą do Twojej dyspozycji. Konfiguracja nie jest konieczna, ponieważ wszystko jest wstępnie skonfigurowane z masowym wirtualnym hostingiem.

Uruchomienie i uruchomienie jest dość proste:

# 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

Spinki do mankietów:

cytopia
źródło
5

Zainstaluj XAMPP . Jeśli używasz MS Windows, WAMP jest również opcją.

poza
źródło
4

MAMP, jeśli korzystasz z MAC MAMP

Joey Blake
źródło
1

Użyj Apache Friends XAMPP . Ustawi serwer Apache HTTP, PHP 5 i MySQL 5 (o ile wiem, prawdopodobnie jest ich więcej). Nie musisz wiedzieć, jak skonfigurować apache (lub którykolwiek z modułów), aby go używać.

Będziesz mieć katalog htdocs, który będzie obsługiwał Apache (dostępny przez http: // localhost / ) i powinieneś być w stanie umieścić tam swoje pliki PHP. W przypadku mojej instalacji jest to C: \ xampp \ htdocs.

Carson Myers
źródło
1

Jeśli masz lokalną maszynę z odpowiednim oprogramowaniem: serwer WWW z obsługą PHP, nie ma powodu, dla którego nie możesz zrobić tego, co opisujesz.

W tej chwili robię to z XAMPP na maszynie z Windows XP i (w domu) z Kubuntu i stosem LAMP.

pavium
źródło
1

AppServ to mały program w systemie Windows do uruchomienia:

  • Apache
  • PHP
  • MySQL
  • phpMyAdmin

Zapewni także przycisk uruchamiania i zatrzymywania Apache. Co uważam za bardzo przydatne.

M. Sundstrom
źródło