PHP и консоль
Работа с PHP в консоли. Создание встроенного "веб-сервера". Передача аргументов скрипту.
Al-Sher
Всем привет! Сегодня я решил рассказать про работу с PHP в консоли. Данное применение PHP встречается редко, но, иногда, и оно может пригодится. В любом случае лишним умение работать в консоли не будет.
Hello World!
Начнем с простого: Запустим php скрипт, который будет выводить нам "Hello World!". Рассмотрим варианты, которые нам доступны:
- Интерактивная консоль;
- Запуск кода в консоли;
- Запуск кода из файла.
Интерактивная консоль
Для начала посмотрим на интерактивную консоль. Данный метод не очень удобный, но без него никуда. Интерактивная консоль позволяет выполнять PHP-код сразу после его ввода в консоль. Вызывается он с помощью команды
php -a
Для работы интерактивной консоли необходимо скомпилировать PHP с опцией
--with-readline
Запуск кода в консоли
Вот пример:
php -r "echo 'Hello World!';"
В этой команде мы говорим, что нам нужен PHP. В качестве команды для него мы передаем параметр -r, который говорит интерпретатору, что нам необходимо запустить код, который находится после него. Чтобы не было каких-либо проблема, код мы записываем в кавычках. Данным способ так же устанавливается и composer.
Запуск кода из файла
Самый популярный из данных методов. Его суть заключается в запуске текстового файла, в котором содержится PHP код. Создадим для начала файл hello.php в котором запишем следующий код:
<?php
echo "Hello World!";
??>
Теперь откроем директорию с данным файлом в консоли и запустим его:
php -f hello.php
Запуск встроенного веб-сервера
Все эти методы позволят запустить код в консоли, но что же нам сделать, чтобы увидеть результат в браузере? Для этого можно воспользоваться, например, встроенным веб-сервером(рассматривать Apache, Nginx и т.д. в данной статье нет смысла). Запустим в папке с предыдущим нашим скриптом(hello.php) следующую команду:
php -S localhost:8000
Тут мы указываем нашему PHP, что ему необходимо прослушивать 8000 порт localhost'а. Давайте зайдем на localhost:8000/hello.php и посмотрим, что напишет наш браузер. Если всё нормально и вам вывелось
Hello World!
То всё хорошо и можно заглянуть в консоль. Там нам описывают куда шли запросы, полезно же ? Чтобы выключить данный веб-сервер необходимо нажать сочетание клавиш ctrl+c.
Аргументы
Чуть не забыл про аргументы... В случае запуска скрипта из консоли без веб-сервера, мы не можем передавать ему GET и POST запросы. На этот случай в PHP передаются такие переменные, как $argv. Данная переменная является массивом и содержит в себе имя запущенного скрипта и всё, что содержится далее. Давайте проверим, что же там находится. Для начала создадим скрипт arg.php с таким содержимым:
<?php
foreach($argv as $a) echo $a."\r\n";
?>
Тут мы просто проходимся по массиву $argv, передавая значения его ключей в переменную $a, а дальше выводим это значение. Запустим наш скрипт:
php -f arg.php
Если всё хорошо, то нам выведится название файла. Теперь добавим некоторые аргументы, например test и arguments:
php -f arg.php test arguments
Теперь наш скрипт должен вывести название файла, test и arguments. Вроде просто. Кстати, $argv[0] всегда содержит название файла, не забывайте об этом ✌