Чтобы запустить PHP-файл, откройте терминал в его папке и введите php index.php. PHP выполнит файл и напечатает результат в терминале. Чтобы увидеть PHP-страницу в браузере, запустите встроенный сервер командой php -S localhost:8000 и откройте http://localhost:8000.
php index.php
Первый index.php может состоять из одной строки. Нажмите Run: именно это печатает php index.php.
PHP-код пишется после тега <?php. Всё, что стоит до этого тега, выводится как обычный текст, и так PHP смешивает код с HTML.
Запуск PHP-файла из командной строки
PHP CLI (интерфейс командной строки) выполняет скрипт один раз и завершается. Нужен установленный PHP; если php -v выдаёт ошибку, сначала посмотрите установку 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 полезен перед загрузкой файла на сервер: он сообщает об ошибке разбора с номером строки или пишет No syntax errors detected in index.php.
Передача аргументов через $argv
Слова после имени файла попадают в $argv. $argv[0] всегда имя самого скрипта, а $argc количество элементов, включая это имя. Здесь блок запускается без дополнительных аргументов, поэтому в массиве только имя:
На своём компьютере php index.php Ada 3 напечатает приветствие три раза. Запасные значения через ?? сохраняют работоспособность скрипта, когда аргумент не передан. Для именованных опций вроде --name=Ada используйте 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";
}
Запуск PHP в браузере через php -S
В PHP встроен веб-сервер для разработки. Запустите его в папке с файлами:
php -S localhost:8000
[Sat Oct 3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started
Теперь http://localhost:8000/ выполняет index.php, а http://localhost:8000/about.php выполняет about.php. Каждая загрузка страницы запускает файл заново, а строка запроса попадает в $_GET. Блок ниже ведёт себя так же: запустите его, нажмите на ссылку, и скрипт выполнится снова с заданным $_GET['page'].
Полезные опции:
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
Встроенный сервер обрабатывает по одному запросу за раз и предназначен только для разработки. В продакшене PHP работает за Nginx или Apache, обычно через PHP-FPM.
Как проверить, каким способом запущен скрипт
PHP_SAPI сообщает, какой "серверный API" выполняет скрипт: cli в терминале, cli-server под php -S, а fpm-fcgi или apache2handler за настоящим веб-сервером. Скрипты, которые должны запускаться только из терминала, проверяют это в первую очередь:
Одна строка через php -r
Для быстрой проверки файл не нужен. php -r выполняет переданный код без тега <?php:
php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'
В cmd Windows оберните код в двойные кавычки, а внутри используйте одинарные. Для нескольких строк php -a открывает интерактивную оболочку, где каждая инструкция выполняется по нажатию Enter.
Исполняемый скрипт в macOS и Linux
Добавьте строку shebang перед <?php и сделайте файл исполняемым. Строка shebang не выводится:
#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php
Так PHP-скрипты запускаются из cron: 0 3 * * * /usr/bin/php /home/me/backup.php.
Коды завершения скриптов
Скрипт командной строки сообщает об успехе или неудаче через код завершения, который могут проверить shell-скрипты и cron. exit(0) означает успех, любое другое число означает ошибку:
<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
fwrite(STDERR, "File not found: $file\n");
exit(1);
}
echo "Processing $file\n";
exit(0);
Частая ошибка: не тот файл или не та папка
Could not open input file: index.php означает, что PHP не находит файл там, где сейчас находится терминал. Проверьте текущую папку командой pwd (или cd в Windows) и либо перейдите в проект через cd, либо укажите полный путь: php ~/projects/hello/index.php. С php -S ошибка 404 для страницы, которая точно существует, обычно значит, что сервер запущен в другой папке; остановите его через Ctrl+C и запустите снова в нужном месте или передайте папку через -t. Если файл выполняется, но показывает пустую страницу, включите вывод ошибок, чтобы увидеть, что пошло не так.
Часто задаваемые вопросы
Как запустить PHP-файл в браузере?
Запустите встроенный сервер в папке с файлом командой php -S localhost:8000 и откройте http://localhost:8000/yourfile.php. Если открыть файл прямо с диска, ничего не сработает: PHP-код просто некому выполнить.
Как передать аргументы PHP-скрипту?
Напишите их после имени файла: php report.php 2026 sales. Внутри скрипта $argv будет массивом ['report.php', '2026', 'sales'], а $argc равен 3. Первый элемент всегда имя скрипта.
Как выполнить одну строку PHP без файла?
Используйте php -r и не пишите тег <?php: php -r 'echo strtoupper("hi"), PHP_EOL;'. Для нескольких строк php -a открывает интерактивную оболочку.
Как понять, запущен PHP из командной строки или веб-сервером?
Проверьте PHP_SAPI (или php_sapi_name()). В терминале это "cli", под php -S это "cli-server", а за веб-сервером что-то вроде "fpm-fcgi" или "apache2handler".