В CLI SAPI есть три различных способа запуска PHP-кода:
Указание конкретного файла для запуска.
Оба способа (с указанием опции -f или без) запустят файл my_script. php. Нет ограничений, какой файл запускать; в частности, файлы не обязаны иметь расширение .php .
Необходимо быть особо осторожным при использовании этого способа, т. к. может произойти подстановка переменных оболочки при использовании двойных кавычек.
Внимательно прочтите пример: в нем нет открывающих и закрывающих тегов! Опция -r просто в них не нуждается, и их использование приведет к ошибке разбора.
Передать запускаемый PHP-код через стандартный поток ввода (stdin ).
Это дает мощную возможность создавать PHP-код и передавать его запускаемому файлу, как показано в этом (вымышленном) примере:
Вы не можете комбинировать любой из этих трех способов запуска кода.
Как и любое другое консольное приложение, бинарный файл PHP принимает аргументы, но PHP-скрипт также может получать аргументы. PHP не ограничивает количество аргументов, передаваемых в скрипт (оболочка консоли устанавливает некоторый порог количества символов, которые могут быть переданы; обычно этого лимита хватает). Переданные аргументы доступны в глобальном массиве $argv. Первый индекс (ноль) всегда содержит имя вызываемого скрипта из командной строки. Учтите, что если код вызывается на лету из командной строки с помощью опции -r. значением $argv[0] будет просто дефис (— ). То же самое верно и для кода, переданного через конвейер из STDIN .
Вторая зарегистрированная глобальная переменная — это $argc. содержащая количество элементов в массиве $argv (а не количество аргументов, переданных скрипту).
Если передаваемые аргументы не начинаются с символа —. то особых проблем быть не должно. Передаваемый в скрипт аргумент, который начинается с — создаст проблемы, т. к. PHP решит, что он сам должен его обработать. Для предотвращения подобного поведения используйте разделитель списка аргументов —. После того, как этот разделитель будет проанализирован PHP, все последующие аргументы будут переданы в скрипт нетронутыми.
Однако, в Unix-системах есть еще один способ использования PHP для консольных скриптов. Можно написать скрипт, первая строка которого будет начинаться с #!/usr/bin/php (или же другой корректный путь к бинарному файлу PHP CLI ). После этой строки можно поместить обычный PHP-код, заключенный в открывающие и закрывающие теги PHP. Как только будут установлены корректные атрибуты запуска на файл (например, chmod +x test ), скрипт может быть запущен как обычный консольный или perl-скрипт: