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

Иногда возникает необходимость запуска php из командной строки, и передать параметры(аргументы). Для проведения каких-то тестов или даже запуск из другого скрипта php, например из-за того, что по умолчанию время выполнения скриптов запущенных из командной строки не имеют ограничений по времени выполнения.

Самый простой способ запуска, это запуск из той директории, где находится скрипт, для этого необходимо прописать следующую команду:

php script_name.php param1 param2 param3

Где php — это интерпретатор, который будет обрабатывать наш файл, script_name.php — это файл, который запускаем, а далее param1 param2 param3 — это параметры, которые попадут в массив [‘argv’] массива $_SERVER, они перечисляются через запятую. В файле script_name.php у меня такой код:

<?php
print_r($_SERVER['argv']);
?>

В результате, в терминале мы увидим такой результат:

Array
(
    [0] => script_name.php
    [1] => param1
    [2] => param2
    [3] => param3
)

Где первым элементом всегда будет имя файла, а затем все переданные параметры.

Вариант вызова php из другого php файла в режиме командной строки, также с передачей аргументов. Итак у меня два файла cli.php, его содержимое:

<?php
$arr = exec("php script_name.php param1 param2 param3");
print_r($arr);
?>

Второй файл, script_name.php, его содержимое:

<?php
echo "Аргумент 1 {$_SERVER['argv'][0]} Аргумент 2 {$_SERVER['argv'][1]} Аргумент 3 {$_SERVER['argv'][2]} Аргумент 4 {$_SERVER['argv'][3]}";
?>

Вызываем первый файл cli.php командой:

php cli.php

Получаем такой результат:

Аргумент 1 script_name.php Аргумент 2 param1 Аргумент 3 param2 Аргумент 4 param3

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *