WebWost WebWostbeta

PHP и консоль

Работа с 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] всегда содержит название файла, не забывайте об этом ✌

0 комментариев

Новый комментарий