Выполнение PHP-файлов
  
  
   В CLI SAPI есть три различных способа запуска PHP-кода:
   
    - 
     
      Указание конкретного файла для запуска.
      
      Оба способа (с указанием опции -f или без) запустят
      файл my_script.php. Нет ограничений, какой
      файл запускать; в частности, файлы не обязаны иметь
      расширение .php.
 
- 
     
      Передать PHP-код напрямую в командной строке.
      
      Необходимо быть особо осторожным при использовании этого способа,
      т.к. может произойти подстановка переменных оболочки при использовании
      двойных кавычек.
      Замечание: 
       
       Внимательно прочтите пример: в нем нет открывающих и закрывающих тегов!
       Опция -r просто в них не нуждается, и их использование
       приведёт к ошибке разбора.
       
 
- 
     
      Передать запускаемый PHP-код через стандартный поток ввода
      (stdin).
 
      Это даёт мощную возможность создавать PHP-код и
      передавать его запускаемому файлу, как показано в этом
      (вымышленном) примере:
      
   Вы не можете комбинировать любой из этих трёх способов запуска кода.
  
  
   Как и любое другое консольное приложение бинарный файл PHP
   принимает аргументы, но PHP-скрипт также получает
   аргументы. PHP не ограничивает количество аргументов,
   передаваемых в скрипт (оболочка консоли устанавливает
   некоторый порог количества символов, которые могут передать;
   обычно этого лимита хватает). Переданные аргументы доступны
   в глобальном массиве $argv. Первый индекс
   (ноль) всегда содержит имя вызываемог из командной
   строкио скрипта. Учтите, что если код вызывается из командной
   строки на лету с опцией -r, значением
   элемента $argv[0] будет «Стандартный поток» (Standard input code);
   до PHP 7.2.0 это был дефис ("-"). То же самое верно и для кода,
   переданного через конвейер из STDIN.
  
  
   Вторая зарегистрированная глобальная переменная —
   $argc, которая содержит количество элементов
   в массиве $argv
   (а не количество аргументов,
   которые передали скрипту).
  
  
   Если передаваемые аргументы не начинаются с символа
   -, то особых проблем быть не должно.
   Передаваемый в скрипт аргумент, который начинается с -
   создаст проблемы, т.к. PHP решит, что он сам должен его
   обработать. Для предотвращения подобного поведения
   используйте разделитель списка аргументов --.
   После того, как этот разделитель будет проанализирован PHP, все последующие
   аргументы будут переданы в скрипт нетронутыми.
  
  
  
   Однако, в Unix-системах есть ещё один способ использования
   PHP для консольных скриптов. Можно написать скрипт,
   первая строка которого будет начинаться с
   #!/usr/bin/php (или же другой
   корректный путь к бинарному файлу PHP CLI).
   После этой строки можно поместить обычный PHP-код, заключённый
   в открывающие и закрывающие теги PHP. Как только будут установлены
   корректные атрибуты запуска на файл (например,
   chmod +x test), скрипт может быть
   запущен как обычный консольный или perl-скрипт:
  
  
   Пример #1 Запуск PHP-скрипта как консольного
   
#!/usr/bin/php
<?php
var_dump($argv);
?>
    
   
    Предполагая, что этот файл назван test
    и находится в текущей директории, можно сделать следующее:
   
$ chmod +x test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}
 
   
  
   Как можно увидеть, в этом случае не нужно заботиться о
   передаче параметров, которые начинаются с -.
  
  
   Исполняемый PHP-файл может использоваться для запуска PHP-скриптов
   независимо от веб-сервера. В случае работы в Unix-подобной системе,
   необходимо добавить в первую строку файла #! (называемый также "shebang")
   чтобы указать, какая из программ должна запускать скрипт.
   На Windows-платформах можно назначить обработчик php.exe для файлов
   с расширениями .php или создать пакетный
   (.bat) файл для запуска скриптов посредством PHP.
   Строка, добавляемая в начале скрипта для Unix-систем,
   не влияет на их работу в ОС Windows, таким образом можно
   создавать кросс-платформенные скрипты. Ниже приведён простой
   пример скрипта, который выполняется из командной строки:
  
  
   
    Пример #2 Скрипт для запуска из командной строки (script.php)
    
#!/usr/bin/php
<?php
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
Это консольный PHP-скрипт, принимающий один аргумент.
  Использование:
  <?php echo $argv[0]; ?> <option>
  <option> Любое слово, которое вы хотели бы
  напечатать. Опции  --help, -help, -h,
  или -? покажут текущую справочную информацию.
<?php
} else {
    echo $argv[1];
}
?>
     
    
  
  
   В приведённом выше скрипте в первой строке содержится shebang,
   указывающий что этот файл должен запускаться PHP. Работа ведётся с CLI-версией,
   поэтому не будет выведено ни одного HTTP-заголовка.
  
  
   Скрипт сначала проверяет наличие обязательного одного аргумента (в дополнение к
   имени скрипта, который также подсчитывается). Если их нет, или если переданный
   аргумент был --help, -help,
   -h или -?, выводится
   справочное сообщение с использованием $argv[0], которое содержит
   имя выполняемого скрипта. В противном случае просто выводится полученный аргумент.
  
  
   Для запуска приведённого примера в Unix-системе, нужно сделать
   его исполняемым и просто выполнить в консоли
   script.php echothis или
   script.php -h. В Windows-системе можно
   создать пакетный файл:
  
  
   
    Пример #3 Пакетный файл для запуска PHP-скрипта из командной строки (script.bat)
    
@echo OFF
"C:\php\php.exe" script.php %*
 
    
  
  
   Предполагая, что вышеприведённый скрипт называется
   script.php, а полный путь к CLI
   php.exe находится в
   C:\php\php.exe, этот пакетный файл
   запустит его с переданными параметрами:
   script.bat echothis или
   script.bat -h.
  
  
   Также можно ознакомиться с модулем
   Readline для получения
   дополнительных функций, которые можно использовать для улучшения
   консольного PHP-скрипта.
  
  
   В Windows запуск PHP можно настроить без
   необходимости указывать C:\php\php.exe или
   расширение .php.
   Подробнее эта тема описана в разделе
   Запуск PHP из
    командной строки в Microsoft Windows.
  
  Замечание: 
   
    В Windows рекомендуется запускать PHP под актуальной учётной записью пользователя.
    При работе в сетевой службе некоторые операции не будут выполнены, поскольку
    "сопоставление имён учётных записей и идентификаторов безопасности не выполнено".