Menu

Jak uruchomić plik PHP: wiersz poleceń i serwer php -S

Uruchom plik PHP z terminala poleceniem php index.php albo serwuj folder w przeglądarce przez wbudowany serwer PHP: php -S localhost:8000. Żadna z tych metod nie wymaga Apache ani XAMPP.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Aby uruchomić plik PHP, otwórz terminal w jego folderze i wpisz php index.php. PHP wykona plik i wypisze wynik w terminalu. Aby zobaczyć stronę PHP w przeglądarce, uruchom wbudowany serwer poleceniem php -S localhost:8000 i otwórz http://localhost:8000.

php index.php

Pierwszy index.php może mieć jedną linię. Kliknij Run: dokładnie to wypisuje php index.php.

Kod PHP zaczyna się po znaczniku <?php. Wszystko przed tym znacznikiem jest wypisywane jako zwykły tekst i właśnie tak PHP łączy kod z HTML.

Uruchamianie pliku PHP z wiersza poleceń

PHP CLI (interfejs wiersza poleceń) wykonuje skrypt raz i kończy działanie. Potrzebujesz zainstalowanego PHP; jeśli php -v zwraca błąd, zajrzyj najpierw do instalacji PHP.

cd ~/projects/hello
php index.php          # run the file
php -l index.php       # only check the syntax ("lint")
php index.php > out.txt   # save the output to a file

php -l przydaje się przed wysłaniem pliku na serwer: zgłasza błąd parsowania z numerem linii albo wypisuje No syntax errors detected in index.php.

Przekazywanie argumentów przez $argv

Słowa po nazwie pliku trafiają do $argv. $argv[0] to zawsze nazwa samego skryptu, a $argc to liczba elementów razem z tą nazwą. Tutaj blok działa bez dodatkowych argumentów, więc jest tylko nazwa:

Na własnym komputerze php index.php Ada 3 wypisze powitanie trzy razy. Wartości zastępcze po ?? sprawiają, że skrypt działa, gdy brakuje argumentu. Dla nazwanych opcji, takich jak --name=Ada, użyj getopt:

<?php
// php index.php --name=Ada --verbose
$opts = getopt('', ['name:', 'verbose']);
echo "Hello, " . ($opts['name'] ?? 'world') . "\n";
if (isset($opts['verbose'])) {
    echo "Verbose mode\n";
}

Uruchamianie PHP w przeglądarce przez php -S

PHP ma wbudowany serwer WWW do celów deweloperskich. Uruchom go w folderze ze swoimi plikami:

php -S localhost:8000
[Sat Oct  3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started

Teraz http://localhost:8000/ uruchamia index.php, a http://localhost:8000/about.php uruchamia about.php. Każde wczytanie strony wykonuje plik od nowa, z query stringiem w $_GET. Poniższy blok działa tak samo: uruchom go, kliknij link, a skrypt wykona się ponownie z ustawionym $_GET['page'].

Przydatne opcje:

php -S localhost:8000 -t public        # serve the public/ folder as the web root
php -S 0.0.0.0:8000                    # reachable from other devices on your network
php -S localhost:8000 router.php       # send every request through router.php

Wbudowany serwer obsługuje jedno żądanie naraz i jest przeznaczony wyłącznie do developmentu. Na produkcji PHP działa za Nginx albo Apache, zwykle przez PHP-FPM.

Sprawdzanie, jak skrypt został uruchomiony

PHP_SAPI mówi, które „server API” wykonuje skrypt: cli w terminalu, cli-server pod php -S, a fpm-fcgi lub apache2handler za prawdziwym serwerem WWW. Skrypty, które mają działać tylko z terminala, sprawdzają to na początku:

Jedna linia przez php -r

Do szybkiego testu nie potrzebujesz pliku. php -r wykonuje przekazany kod, bez znacznika <?php:

php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'

W cmd na Windowsie umieść kod w podwójnych cudzysłowach, a w środku używaj pojedynczych. Dla kilku linii php -a otwiera powłokę interaktywną, w której każda instrukcja wykonuje się po naciśnięciu Enter.

Skrypt wykonywalny na macOS i Linuksie

Dodaj linię shebang przed <?php i oznacz plik jako wykonywalny. Linia shebang nie jest wypisywana:

#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php

Tak uruchamia się skrypty PHP z crona: 0 3 * * * /usr/bin/php /home/me/backup.php.

Kody wyjścia skryptów

Skrypt wiersza poleceń zgłasza sukces lub porażkę przez kod wyjścia, który mogą sprawdzić skrypty powłoki i cron. exit(0) oznacza sukces, każda inna liczba oznacza błąd:

<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
    fwrite(STDERR, "File not found: $file\n");
    exit(1);
}
echo "Processing $file\n";
exit(0);

Częsty błąd: zły plik lub zły folder

Could not open input file: index.php oznacza, że PHP nie widzi pliku z miejsca, w którym jest terminal. Sprawdź bieżący folder przez pwd (albo cd na Windowsie) i albo przejdź przez cd do projektu, albo podaj pełną ścieżkę: php ~/projects/hello/index.php. Przy php -S błąd 404 dla strony, która na pewno istnieje, zwykle oznacza, że serwer uruchomiono w innym folderze; zatrzymaj go przez Ctrl+C i uruchom ponownie we właściwym miejscu albo wskaż folder przez -t. Gdy plik się wykonuje, ale pokazuje pustą stronę, włącz raportowanie błędów, aby zobaczyć, co poszło nie tak.

Najczęściej zadawane pytania

Jak uruchomić plik PHP w przeglądarce?

Uruchom wbudowany serwer w folderze z plikiem poleceniem php -S localhost:8000, a potem otwórz http://localhost:8000/yourfile.php. Otwarcie pliku prosto z dysku nie działa, bo nic nie wykonuje kodu PHP.

Jak przekazać argumenty do skryptu PHP?

Wpisz je po nazwie pliku: php report.php 2026 sales. W skrypcie $argv to tablica ['report.php', '2026', 'sales'], a $argc wynosi 3. Pierwszym elementem jest zawsze nazwa skryptu.

Jak uruchomić jedną linię PHP bez pliku?

Użyj php -r i pomiń znacznik <?php: php -r 'echo strtoupper("hi"), PHP_EOL;'. Dla kilku linii php -a otwiera powłokę interaktywną.

Jak sprawdzić, czy PHP działa z wiersza poleceń, czy na serwerze WWW?

Sprawdź PHP_SAPI (albo php_sapi_name()). W terminalu ma wartość "cli", pod php -S wartość "cli-server", a za serwerem WWW coś w rodzaju "fpm-fcgi" albo "apache2handler".

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ