Php cli что это

от admin

Php cli что это

Замечание:

Поскольку обе опции, —enable-cli и —enable-cgi, включены по умолчанию, просто наличие —enable-cli в команде конфигурации необязательно означает, что CLI будет скопирован в /bin/php при выполнении make install.

Замечание: Какой из вариантов SAPI установлен?

Выполните из командной строки php -v для получения информации о том, является ли php CGI или CLI . Также вы можете использовать функцию php_sapi_name() или константу PHP_SAPI .

Замечание:

Соответствующую страницу руководства ( man ) Unix можно просмотреть с помощью команды man php в консоли.

Пишем консольное (CLI) приложение на PHP. Часть 1.

В этой статье мы разберемся что такое консольные (CLI) приложения. Напишем простейшее CLI приложение. Реализуем получение аргументов приложения с помощью переменной $argv.

Что такое PHP CLI

В большинстве случаев php используется для обработки HTTP запросов. Однако таким образом можно решить далеко не все задачи более-менее сложного веб-приложения. Например, нам может потребоваться выполнять email рассылку или время от времени вносить изменения в базу данных. В таком случае, если продолжать использовать клиент-серверный подход, администратору сайта придется раз в день переходить по определенному адресу для запуска php скрипта, что, согласитесь, не очень удобно.

Для решения этой задачи, начиная с PHP 4.3 (в 2002 году), появилась официальная поддержка режима CLI. Это значит, что теперь php можно использовать для написания консольных программ, которые читают вводимые команды и выполняют запрошенные действия.

Первая CLI программа на PHP

Теперь давайте посмотрим как создавать такие программы. Для этого, конечно, должен быть установлен интерпретатор php. Более подробно процесс его установки мы рассмотрели в этой статье.

Для примера, напишем самое простое приложение на php. Для этого создадим файл cli.php и запишем в него следующее содержимое:

При обычном, клиент-серверном подходе, такое приложение выводит на экран браузера: Digital-Blog. Но теперь, мы попробуем запустить его в консоли. Для этого, откроем стандартный интерпретатор командной строки. В моем случае (Windows) это cmd.exe. Затем, перейдем в директорию с файлом cli.php и выполним команду:

Вывод будет следующим:

Это значит, что наше приложение успешно выполнилось.

Получение аргументов с помощью $argv

При вызове программы также можно указать аргументы командной строки — это необязательные строковые параметры, передаваемые операционной системой в программу при её запуске. В PHP их содержит глобальная переменная $argv в виде ассоциативного массива. Давайте изменим содержимое файла cli.php на:

Теперь, запустим нашу программу, указав несколько аргументов:

Мы получим следующий вывод:

Как видите, значение с нулевым индексом это название нашего файла, а дальше идут аргументы командной строки. Теперь напишем программу, которая, в случае наличия аргумента «a», будет выводить «OK»:

Для проверки, сначала запустим программу без аргумента «a», а потом добавим его:

Получение значений аргументов с помощью $argv

Таким образом, мы можем только проверить наличие определенного аргумента. Для получения его значения, нам придется написать простой парсер, который будет представлять аргументы функции в виде ассоциативного массива. Его индексами будут являться имена аргументов, а значения будут значениями аргументов:

Теперь мы можем указывать значения аргументов через знак «=». Например, запустим эту программу с аргументом «-a», которому присвоим значение «test».

Также, мы можем указать несколько аргументов:

В приведенной выше программе, массив $argv перебирается со второго элемента циклом for. Каждый элемент проверяется на соответствие регулярному выражению. Если он соответствует, то символы между «—» и «=» записываются в индекс элемента ассоциативного массива $parsed_args, а символы после «=» в его значение. После этого массив $parsed_args выводится в консоль.

В следующих частях мы рассмотрим более простой способ получения значений аргументов, будем обрабатывать пользовательский ввод и форматировать вывод нашей программы. А также научимся запускать приложение без «php» в начале.

Ну а на этом все, надеюсь эта статья была вам полезна. А если у вас возникли вопросы — вы можете задать их в комментариях)

PHP Command-line Interface (CLI)

A PHP command-line interface is great for a quick check of PHP configurations or a small syntax code testing. It saves times compared to creating a PHP webpage and running it on a webserver.

There are many advanced uses of PHP CLI but let’s just keep it simple and stupid CLI usage.

PHP Interactive Shell

To invoke PHP interactive shell run

A one-line PHP code can be tested on PHP interactive shell. Another great use is to check your Regular Expression syntax. Store search string in a variable and making small changes in RegEx and execute preg_match, until you get desired output.

To exit the PHP interactive shell simply run CTL+C.

I have copied and pasted functions in PHP command-line interactive shell. Very handy to test lines of code while coding. While you are in terminal use vi, vim or nano to edit and make small changes in your script files.

Checking PHP Configurations | php.ini

A simple echo phpinfo() in webserver or command-line shell will display all PHP configurations. Instead, try running this in the command line:

If you have two different PHP ini files for webserver and CLI, specify php.ini location to see it’s configuration.

php -c /etc/php/apache2/php.ini -i

How to find PHP Configuration file php.ini

A very simple command can help you find locations of all PHP ini files and the path of currently loaded php.ini configuration file. Simply run

Its $php followed by a space and two hyphens (-) without any space in between.

How to check PHP script output in the command line

Simply direct the script to PHP interpreter which will execute script file and output result on terminal. For example, run this command in the terminal to execute a PHP script located in /home/username directory

PHP Command line Global Regular Expression Print (grep)

Use grep to look for specific output as sometimes you get a massive amount of data in the output. For instance when you run $php -i and only want to see ini location type this in the command line

$php -i | grep ‘php.ini’

In my case it outputs

Configuration File (php.ini) Path => /etc/php/7.0/cli

Loaded Configuration File => /etc/php/7.0/cli/php.ini

In this command, we have used | pipe to direct PHP output to grep. grep looks for ‘php.ini’ in that output and returns matching lines.

Similarly, you can check if mysqli is loaded or search for any specific strings in PHP output.

$php -i | grep ‘mysqli’

Hope you find it useful and if you know any other usage do share, thanks.

Разработка консольных приложений и автоматизация задач на PHP: старый добрый язык как знакомая замена Bash

«Bash? Беляш? Эммм… Что? Как? По-че-му?» — если именно эти слова произносил ваш внутренний голос, когда вы, начитавшись статей в интернете, решили с помощью Bash автоматизировать ту рутинную задачу, то эта статья для вас. И она ещё более для вас, если вы уже знаете PHP — сейчас вы узнаете также то, что PHP отлично подходит не только для разработки сайтов, но и для консольных приложений.

Предполагается, что вы используете Linux и знаете PHP не ниже начального уровня:

1. Текстовый курс;

original

Что такое PHP CLI

Итак, вот как выглядит самое простое приложение на PHP:

Но его можно запустить не только через браузер, но и через консоль. Если вы разместим этот код в файле с названием hello_world.php :

Вывод будет весьма ожидаемым:

В консольных PHP приложениях (CLI) вы можете использовать всё то, что и в обычных PHP приложениях, например, записывать и читать файлы функциями file_put_contents и file_get_contents .

Получение аргументов из командной строки

Менее знакомыми для обычных PHP-разработчиков являются функции для работы с командой строкой.

Если вы хотите передать из командой строки какие-либо аргументы в свой скрипт:

…то прочитать их из PHP можно с помощью глобальной переменной $argv. В данном случае её содержимое будет выглядеть вот так:

Заметьте, что значением с индексом 0 всегда является имя запускаемого скрипта. В некоторых случаях для чтения списка аргументов также может быть удобна функция getopt.

Чтение пользовательского ввода

Функция readline создана для запроса пользовательского ввода и используется следующим образом:

Выполнение сторонних приложений

Но когда возможностей стандартной библиотеки PHP не хватает, на помощь приходит функция system: с её помощью можно вызывать сторонние приложения.

Если нам, например, нужно стереть с экрана весь предыдущий вывод, то из PHP мы сможем сделать это вот так:

Это выполнит команду clear , как будто вы сами ввели её в консоль.

Форматирование вывода

Конечно, вы не можете выводить HTML-теги функцией echo, как вы делали раньше, и надеяться на отформатированный вывод, но возможность задать базовое оформление всё же остается благодаря так называемым эскейп-последовательностям:

Сокращенное написание

Ура, теперь вы знаете, как делать настоящие консольные приложения на PHP! Но, согласитесь, писать каждый раз

не очень то весело и даже немножко грустненько.

Но и эту проблему можно решить, просто добавьте в начало файла #!/usr/bin/php , где /usr/bin/php является адресом вашего PHP интерпретатора.

Итоговый файл должен получиться примерно таким:

Если назвать его myapp (без расширения), то при условии, что вы находитесь в папке с файлом, запустить его можно будет вот так:

А чтобы запускать ваше консольное приложение из любой существующей, нескольких несуществующих и одной невероятной папки, достаточно просто перенести его в каталог /usr/bin. Например, вот так:

Небольшой пример реального кода для закрепления знаний: FastAdminer — консольное PHP приложение, в котором используется всё описанное в статье.

Читать:
Где хранится файл лицензии 1с

Похожие статьи