Исполнение PHP файлов: варианты и примеры
Способы запуска PHP скриптов
Как выполнить PHP файл без веб сервера?
Основной способ запуска PHP скрипта использует интерпретатор командной строки (CLI). Для этого достаточно вызвать команду php с указанием пути к файлу.
php /home/user/script.phpИнтерпретатор читает содержимое файла, выполняет код и выводит результат в консоль. Этот метод подходит для отладки, фоновых задач, работы с файловой системой и любых сценариев, не требующих веб окружения.
Типичные ошибки:
- php: command not found - PHP не установлен или отсутствует в системной переменной PATH. Решение: установите интерпретатор (
sudo apt install phpна Debian/Ubuntu) или укажите полный путь к исполняемому файлу. - Parse error - синтаксическая ошибка в коде. Проверьте файл с помощью
php -l script.php. - Permission denied - недостаточно прав на чтение или выполнение файла. Используйте
chmod +r script.php.
Как выполнить PHP скрипт в браузере через локальный сервер?
Поместите скрипт в корневую директорию веб сервера (например, /var/www/html для Apache) и обратитесь к нему через URL http://localhost/script.php. Сервер передаёт запрос интерпретатору, который обрабатывает код и отправляет результат в браузер. Это стандартный способ для разработки сайтов.
sudo cp script.php /var/www/html/
# или
sudo mv script.php /var/www/html/Возможные проблемы:
- Сервер не настроен на обработку PHP - установите модуль
libapache2-mod-phpдля Apache или настройте FastCGI для Nginx. - Файл не отображается - проверьте права доступа и настройки DirectoryIndex.
Как быстро запустить PHP без установки Apache?
Встроенный веб сервер PHP запускается командой php -S localhost:8000. Запросы по адресу http://localhost:8000/script.php будут обрабатываться интерпретатором.
php -S localhost:8080 -t /путь/к/папкеЭтот вариант удобен для быстрого тестирования, не требует настройки внешнего сервера.
При попытке использовать встроенный сервер с HTTPS или сложной маршрутизацией могут возникнуть ограничения. Для продакшена используйте полноценный сервер.
Как автоматизировать запуск PHP скрипта по времени?
Добавьте задачу в cron, указав интервал и команду вызова.
# Запуск каждый день в 6 утра
0 6 * * * /usr/bin/php /путь/к/script.php >> /var/log/cron.log 2>&1Перенаправление вывода обязательно, иначе письмо будет отправлено владельцу задачи. Проверяйте логи при сбоях - часто ошибки возникают из за неполного пути к интерпретатору.
Как выполнить второй PHP скрипт внутри текущего?
Используйте функции exec, shell_exec или system. Они запускают новый процесс с указанной командой.
$output = shell_exec('php /путь/к/another.php');
echo $output;Это полезно для параллельной обработки или вызова внешнего скрипта с ожиданием результата. Обратите внимание на безопасность: если в команду подставляются пользовательские данные, используют escapeshellcmd или escapeshellarg.
Вызов exec может не работать в режиме безопасного использования (disabled_functions). Проверьте настройки php.ini.
Как изолировать выполнение PHP скрипта в контейнере?
Создайте Docker образ с PHP и скопируйте скрипт внутрь. Запустите контейнер с командой php script.php.
FROM php:8.2-cli
COPY script.php /app/
CMD ["php", "/app/script.php"]Соберите и выполните: docker build -t my-php-app . && docker run my-php-app. Этот метод гарантирует повторяемость окружения и не влияет на основную систему.
Расширенные примеры выполнения PHP сценариев
Передача аргументов командной строки
Скрипт может принимать параметры через переменные $argv (массив аргументов) и $argc (их количество). Пример:
// script.php
<?php
$name = $argv[1] ?? 'мир';
echo "Привет, $name!\n";
echo "Всего аргументов: $argc\n";
?>Запуск:
php script.php ИванПривет, Иван! Всего аргументов: 2
Передача данных через STDIN
Скрипт может читать из стандартного ввода, что позволяет использовать конвейеры.
// read_input.php
<?php
$data = file_get_contents('php://stdin');
echo "Прочитано: $data";
?>echo "Строка из конвейера" | php read_input.phpПрочитано: Строка из конвейера
Загрузка пользовательского конфигурационного файла
Иногда требуется запустить скрипт с особыми настройками PHP (например, увеличенным лимитом памяти).
php -c /путь/к/my.ini script.phpСодержимое my.ini может быть таким:
memory_limit = 256M
max_execution_time = 60Проверить действующие настройки можно с помощью php -i | grep memory_limit или вызова ini_get в коде.
Выполнение кода без файла (для быстрых тестов)
PHP позволяет выполнять короткие скрипты прямо из командной строки.
php -r "echo 'Hello from CLI!';"Hello from CLI!
Можно передавать параметры через оболочку, но для более сложных конструкций удобнее использовать временный файл.
Запуск в фоне и логирование
Для долгих задач на Unix системах можно запустить скрипт в фоне и перенаправить вывод.
nohup php /путь/к/long_task.php > /tmp/output.log 2>&1 &Команда nohup защищает процесс от завершения при закрытии терминала. Проверить работающие процессы: ps aux | grep php. Ошибки обычно связаны с отсутствием прав на запись в лог файл.