Как запустить скрипт php из командной строки

Как запустить скрипт php из командной строки

В среде разработки и администрирования серверов часто требуется выполнять PHP-скрипты вне браузера – напрямую через командную строку. Такой подход позволяет запускать фоновые задачи, автоматизировать cron-задания, тестировать модули без участия веб-сервера и обрабатывать большие объёмы данных без ограничения по таймауту или памяти, накладываемых браузером.

Для запуска PHP из CLI необходимо наличие интерпретатора PHP в системной переменной PATH или указание полного пути к исполняемому файлу. Команда имеет базовый синтаксис: php script.php. Если скрипт зависит от аргументов, они передаются через пробел: php script.php аргумент1 аргумент2. Получить их можно через массив $argv, где $argv[0] – имя скрипта, а последующие элементы – переданные параметры.

Важно учитывать различие между окружением веб-сервера и CLI. В командной строке не доступны переменные $_SERVER[‘REQUEST_METHOD’], $_GET, $_POST и другие суперглобальные массивы, связанные с HTTP-запросами. Вместо них стоит использовать fgets(STDIN) для интерактивного ввода или передавать значения через параметры.

Для контроля среды исполнения рекомендуется явно указывать настройки с помощью параметра -d, например: php -d memory_limit=512M script.php. Это особенно полезно при обработке больших массивов данных или при отладке, когда требуется изменить поведение PHP без редактирования php.ini.

Проверка наличия PHP в командной строке

Откройте терминал и выполните команду:

php -v

Если PHP установлен и добавлен в системную переменную PATH, отобразится версия интерпретатора и сборочная информация. Например:

PHP 8.2.6 (cli) (built: May  2 2023 08:14:32) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.6, Copyright (c) Zend Technologies

Если вместо этого появляется сообщение об ошибке вроде 'php' не является внутренней или внешней командой, значит PHP либо не установлен, либо не прописан в PATH.

Проверьте наличие исполняемого файла вручную:

  • В Windows: откройте C:\php или C:\Program Files\PHP, убедитесь в наличии файла php.exe
  • В Linux/macOS: выполните which php или command -v php

Если путь найден, но команда php не работает, добавьте его в PATH:

  • В Windows: Панель управления → Система → Переменные среды → PATH → Изменить → Добавить путь к папке с php.exe
  • В Linux/macOS: добавьте строку export PATH="/usr/local/php/bin:$PATH" в файл ~/.bashrc или ~/.zshrc, затем выполните source ~/.bashrc

После внесения изменений перезапустите терминал и повторно выполните php -v для проверки доступности PHP из командной строки.

Определение пути к исполняемому файлу PHP

Определение пути к исполняемому файлу PHP

Для запуска PHP-скрипта из командной строки требуется указать точный путь к исполняемому файлу PHP. Чтобы узнать этот путь, выполните команду:

which php – в Linux и macOS

where php – в Windows (при наличии PHP в переменной PATH)

Если команда не возвращает результат, это означает, что PHP не установлен или не добавлен в системную переменную окружения. В Linux можно установить PHP через пакетный менеджер:

sudo apt install php – для Debian/Ubuntu

sudo yum install php – для CentOS/RHEL

После установки проверьте путь снова. Как правило, он будет выглядеть так: /usr/bin/php или /usr/local/bin/php. В Windows путь может быть, например, C:\php\php.exe.

Если PHP установлен, но не находится в PATH, путь можно задать явно при запуске скрипта:

/usr/local/php8.2/bin/php script.php

Для автоматизации запуска рекомендуется добавить путь к PHP в переменную PATH. В Linux добавьте строку в ~/.bashrc или ~/.zshrc:

export PATH=»/usr/local/php8.2/bin:$PATH»

Проверьте, что используется нужная версия PHP:

php -v

Если в системе установлено несколько версий PHP, используйте полные пути к нужному бинарному файлу или управляйте версиями через update-alternatives (в Linux) или инструменты вроде Homebrew в macOS.

Запуск PHP скрипта с указанием полного пути

Запуск PHP скрипта с указанием полного пути

Для запуска PHP скрипта напрямую через командную строку необходимо использовать абсолютный путь как к интерпретатору, так и к самому скрипту. Это гарантирует корректное выполнение вне зависимости от текущего рабочего каталога.

Пример команды в Unix-подобных системах:

/usr/bin/php /var/www/project/scripts/task.php

На Windows:

"C:\Program Files\PHP\php.exe" "D:\web\project\scripts\task.php"
  • Убедитесь, что путь к PHP интерпретатору точен. Команда which php (Linux/macOS) или where php (Windows) покажет путь.
  • Скрипт должен иметь корректные права доступа. На Linux: chmod +x task.php, если скрипт должен быть исполняемым.
  • Если в скрипте используются относительные пути, они будут интерпретироваться относительно текущего каталога, из которого вызывается команда. Чтобы избежать ошибок, используйте __DIR__ внутри скрипта для построения путей.
  • Для системных задач рекомендуется использовать cron (Linux) или Планировщик задач (Windows), указывая полный путь в конфигурации задания.

Если скрипт принимает аргументы:

/usr/bin/php /var/www/project/scripts/task.php param1 param2

Внутри PHP используйте массив $argv для доступа к переданным параметрам.

Передача аргументов в PHP скрипт через CLI

Пример запуска:

php script.php param1 param2

Внутри script.php можно получить доступ к аргументам следующим образом:


$firstArg = $argv[1] ?? null;
$secondArg = $argv[2] ?? null;

Для определения количества аргументов используется переменная $argc. Она указывает общее число переданных элементов, включая имя скрипта:


if ($argc < 3) {
fwrite(STDERR, "Недостаточно аргументов\n");
exit(1);
}

Если необходимо обрабатывать именованные аргументы (например, —mode=debug), потребуется вручную разбирать строку или использовать функции парсинга:


$options = [];
foreach ($argv as $arg) {
if (str_starts_with($arg, '--')) {
$parts = explode('=', ltrim($arg, '-'), 2);
$options[$parts[0]] = $parts[1] ?? true;
}
}

Для более надежной обработки опций с флагами используйте getopt(), но она работает только с короткими ключами (-a, -b):


$options = getopt("a:b::");

Значение без двоеточий – обязательный аргумент, с одним двоеточием – необязательный, с двумя – необязательный с возможным значением. Для сложных CLI-интерфейсов рекомендуется использовать внешние библиотеки, такие как Symfony Console.

Чтение аргументов в PHP с использованием массива $argv

  • $argv[0] – путь к исполняемому скрипту
  • $argv[1] и далее – переданные аргументы

Для корректной обработки аргументов необходимо проверять их количество с помощью $argc – переменной, содержащей число всех аргументов.

php script.php значение1 значение2
<?php
if ($argc < 3) {
fwrite(STDERR, "Ожидается минимум 2 аргумента.\n");
exit(1);
}
$первый = $argv[1];
$второй = $argv[2];
echo "Первый аргумент: $первый\n";
echo "Второй аргумент: $второй\n";
?>

При использовании аргументов, содержащих пробелы, их необходимо заключать в кавычки:

php script.php "значение с пробелами" другой

Для удобной обработки флагов и параметров используйте цикл:

<?php
for ($i = 1; $i < $argc; $i++) {
echo "Аргумент $i: $argv[$i]\n";
}
?>

Для ассоциативной обработки параметров вида --ключ=значение:

<?php
$args = [];
foreach ($argv as $arg) {
if (preg_match('/^--(\w+)=("?.+"?)$/', $arg, $matches)) {
$args[$matches[1]] = trim($matches[2], '"');
}
}
print_r($args);
?>

Не используйте $argv в веб-контексте – он работает только в CLI. Проверку окружения выполняйте через php_sapi_name() === 'cli'.

Обработка ошибок при запуске скрипта из консоли

Во-первых, следует включить отображение ошибок, если оно не настроено по умолчанию. Для этого в командной строке можно использовать директивы error_reporting и ini_set. Например, для отображения всех ошибок следует использовать следующий код:



Кроме того, важно учитывать обработку исключений. В командной строке PHP поддерживает обработку исключений через блоки try-catch. Пример обработки исключений:

getMessage();
}
?>

Для более детализированного логирования можно использовать сторонние библиотеки, например, Monolog. Это даст возможность записывать ошибки в разные файлы в зависимости от типа ошибки (например, предупреждения, фатальные ошибки) и настроить уровни логирования (информация, предупреждения, ошибки). Пример использования Monolog:

pushHandler(new StreamHandler('/path/to/your.log', Logger::WARNING));
$log->warning('Это предупреждение');
$log->error('Это ошибка');
?>

Для эффективной работы с ошибками важно также проверять статус выполнения команд в операционной системе. Например, после вызова внешних команд или выполнения операций с базой данных можно использовать shell_exec или exec для проверки ошибок:


Таким образом, успешная обработка ошибок в консольных скриптах PHP требует комплексного подхода: настройка отображения ошибок, обработка исключений, использование логирования и проверка статуса выполнения команд. Следуя этим рекомендациям, можно значительно повысить стабильность и удобство в отладке PHP-скриптов, запускаемых из командной строки.

Настройка прав доступа для запуска скрипта

Для успешного запуска PHP скрипта из командной строки необходимо правильно настроить права доступа к файлу. В операционных системах на базе Unix (например, Linux и macOS) права доступа управляются с помощью команды chmod.

Прежде всего, убедитесь, что у вас есть права на выполнение скрипта. Для этого используйте команду:

chmod +x имя_скрипта.php

Она добавит право на выполнение для владельца файла. Если нужно предоставить права на выполнение для других пользователей, например, для группы или всех пользователей, можно использовать:

chmod 755 имя_скрипта.php

Команда 755 даёт владельцу полные права (чтение, запись, выполнение), а группе и остальным пользователям – только права на чтение и выполнение.

Кроме того, стоит проверять владельца файла. В случае необходимости, чтобы изменить владельца, используется команда chown. Например:

sudo chown пользователь:группа имя_скрипта.php

Где пользователь – это имя пользователя, которому должен принадлежать файл, а группа – имя группы. Убедитесь, что владельцем скрипта является тот, кто будет его запускать, иначе выполнение будет невозможно.

При настройке прав также следует учитывать безопасность. Ограничение прав на запись и выполнение для группы и других пользователей минимизирует риски доступа к скрипту посторонними. Например, если скрипт должен запускаться только владельцем, используйте:

chmod 700 имя_скрипта.php

Эти настройки позволят только владельцу файла выполнять и изменять скрипт, исключив доступ к нему для всех остальных.

Вопрос-ответ:

Что такое запуск PHP скрипта из командной строки?

Запуск PHP скрипта из командной строки представляет собой выполнение PHP-скрипта без использования веб-сервера. Это удобно, когда необходимо быстро выполнить скрипт, например, для тестирования или в рамках задачи автоматизации. Для этого достаточно вызвать PHP интерпретатор с указанием пути к файлу через терминал или командную строку.

Ссылка на основную публикацию