Запуск php скрипта из консоли

project author

Если Вам понравился данный материал, поделитесь им с вашими друзьями в соц сетях


В данном материале мы рассмотрим такие вопросы как: настройка PHP для работы в командной строке, выполнение PHP-кода в командной строке, запуск PHP скриптов в командной строке без аргументов и с аргументами.

"На дисерт", в последнем пункте материала, будет показан процесс установки через командную строку менеджера зависимостей для PHP getcomposer.org.

Начиная с версии 4.3.0, PHP поддерживает новый вид SAPI (интерфейс разработки серверных приложений) под названием CLI, что означает интерфейс командной строки. Как видно из названия, этот вид SAPI предназначен для разработки консольных (или даже десктопных) приложений на PHP.

Начиная с PHP 4.3.0 дистрибутив для Windows влючает в себя CLI-модуль php.exe, расположенный в отдельной директории cli, полное имя - cli/php.exe. Начиная с PHP 5, CLI-модуль расположен в основной директории и называется php.exe. CGI-модуль также включен в дистрибутив под названием php-cgi.exe. Начиная с PHP 5, в дистрибутив для Windows входит новый файл php-win.exe. Он полностью эквивалентен CLI, за исключением того, что php-win абсолютно ничего не выводит, что приводит к отстутствию консоли (окно DOS не появляется на экране).

 

Настраиваем работу PHP из командной строки

Прежде всего Вы должны узнать расположение CLI-модуля, файла с именем "php.exe". В моем случае полный путь до данного файла выглядит так - "C:\php\php.exe".

Теперь нам нужно проверить работает ли PHP в командной строке. Для этого откроем командную строку (желательно от имени администратора) и выполним команду:

C:\Windows\system32>C:\php\php.exe --help

укажем полный путь до CLI-модуля, файла "php.exe" (т.е. "C:\php\php.exe"), и через пробел добавим ключ "--help".
(вызов "PHP" в консоли с ключем "--help" покажет справочную информацию).

Если после выполнения данной команды Вы получили предупреждения или сообщения об ошибках, то вероятнее всего, Вами был не верно указан путь до CLI-модуля "C:\php\php.exe".

При удачном выполнение команды должна отобразиться справочная информация. Поздравляю, Ваш PHP работает в консоли.

Вы наверное согласитесь со мной, что каждый раз указывать путь "C:\php\php.exe" довольно-таки не приятно, и конечно же, запуск PHP можно настроить без необходимости указывать полный путь до файла "C:\php\php.exe". Для этого необходимо в "Переменные среды" в переменную "PATH" добавить путь до этого файла.

Давайте ради интереса, до внесения изменений в переменную "PATH", попробуем вызвать в консоли PHP:

выполняем команду с опцией "php --help"

C:\Windows\system32>php --help

В ответ Вы скорее всего получите:

C:\Windows\system32>php --help
"php" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

 

Теперь добавим путь до CLI-модуля "php.exe" в переменную "PATH". Найти данную переменную можно выполнив ряд действий (визуально представлено на изображениях ниже):

"Пуск" → пункт "Панель управления" → "Система" → "Изменить параметры" → вкладка "Дополнительно" → "Переменные среды" → в нижнем блоке (Системные переменные) выделяем Переменную "Path" или "PATH" → "Изменить"

В данной переменной уже имеются пути, которые разделены точкой с запятой (;). Вам необходимо добавить в конец переменной свой путь до CLI-модуля, файла "php.exe", В моем случае путь это - "C:\php\". (Будьте внимательны, при внесении изменений не удалите текущие значения).

добавим путь до CLI-модуля, файла "php.exe", в переменную "PATH"

 

Снова выполняем команду с ключем "php --help"

C:\Windows\system32>php --help
или
C:\Windows\system32>php -h

команда "php" с ключем "--help" покажет справочную информацию

 

Примеры работы PHP в командной строке

Откроем консоль (желательно от имени администратора) и перейдем к практике.

Рассмотрим два способа запуска PHP-кода:

  • Передача PHP-кода напрямую в командной строке
  • Указание конкретного файла для запуска

 

Первый способ. Опция "-r" (или "--run") позволяет выполнять PHP-код, указанный непосредственно в командной строке. Открывающие и завершающие PHP-теги (<?php и ?>) не нужны.

C:\Windows\system32>php -r "printf(1);"
1
C:\Windows\system32>php -r "printf(1+2);"
3
C:\Windows\system32>php -r "printf('Hello world');"
или
C:\Windows\system32>php -r "print_r('Hello world');"
C:\Windows\system32>php -r "echo 'Hello world';"
Hello world
C:\Windows\system32>php -r "var_dump($_SERVER);"

 

Второй способ. Опция "-f" (или "--file") позволяет исполнять указанный файл. Является не обязательной и может отсутствовать, достаточно просто указать имя файла.

Исполним индексный файл веб-сервера Apache с расширением ".html"

C:\Windows\system32>php -f C:\Apache24\htdocs\index.html
или
C:\Windows\system32>php C:\Apache24\htdocs\index.html
<html><body><h1>It works!</h1></body></html>

Исполним php скрипт

C:\Windows\system32>php C:\Apache24\htdocs\phpinfo.php

 

Передаем аргументы php скрипту в консоли

Как и любое другое консольное приложение, PHP может принимает аргументы, а PHP-скрипт также может получать аргументы. Рассмотрим данную возможность на примере. В корневой директории управления сайтами "C:\Apache24\htdocs" создадим файл "console.php" и внесем в него строки:

<?php
// количество аргуметов переданных в консоли
echo "The number of array elements \$argv = " . $_SERVER['argc'] . "\n";
// выводим массива аргументов переданных в консоли
print_r($_SERVER['argv']);
?>

Исполним php скрипт "console.php" без передачи параметров

C:\Windows\system32>php C:\Apache24\htdocs\console.php
The number of array elements \$argv = 1
Array
(
    [0] => C:\Apache24\htdocs\console.php
)

количество аргуметов переданных в консоли равно 1,
этим аргументом является путь до файла "C:\Apache24\htdocs\console.php"

Исполним php скрипт "console.php" с передачей параметров

C:\Windows\system32>php C:\Apache24\htdocs\console.php param1 param2
The number of array elements \$argv = 3
Array
(
    [0] => C:\Apache24\htdocs\console.php
    [1] => param1
    [2] => param2
)

количество аргуметов переданных в консоли равно 3,
первым аргументом является путь до файла "C:\Apache24\htdocs\console.php"
вторым и третим - param1, param2

 

Установка composer

composer

Composer (getcomposer.org) - это инструмент для управления зависимостями в PHP. Он позволяет вам объявлять зависимые библиотеки для вашего проекта, устанавливать их и обновлять.

На официальном сайте getcomposer.org есть инструкция по его установке для "Installation - Linux / Unix / OSX" и для "Installation - Windows".

Перед скачиванием архива "composer.phar" убедитесь, что в конфигурационном файле "C:\php\php.ini" подключено расширение "php_openssl.dll". (Для этого раскомментируйте строку "extension=php_openssl.dll").

для того, чтобы скачать "composer.phar" выполните следующие команды

C:\Windows\system32>cd C:\Apache24\htdocs
C:\Apache24\htdocs>php -r "readfile('https://getcomposer.org/installer');" | php
#!/usr/bin/env php
All setting correct for using Composer
Downloading...
Composer successfully installed to: C:\Apache24\htdocs\composer.phar
Use it: php composer.phar

первой командой перейдем в директорию "C:\Apache24\htdocs"
второй командой скачаем архив "composer.phar" в эту директорию
Перевод:
Все настройки верны для использования Composer
Загрузка...
Composer успешно установлен: C:\Apache24\htdocs\composer.phar
Использовать: php composer.phar

создадим файл "composer.bat"

C:\Apache24\htdocs>echo @php "%~dp0composer.phar" %*>composer.bat 

после выполнения данной команды рядом с архивом "composer.phar" появится файл "composer.bat"

теперь находясь в директории где расположены файлы "composer.phar" и "composer.bat" можно выполнить следующие команды

C:\Apache24\htdocs>composer -V
Composer version 1.0-dev (xx...xx) 2015-xx-xx xx:xx:xx
C:\Apache24\htdocs>composer -h

первая команда выводит версию composer
вторая команда выводит справочную информацию

 

 

По итогам изучения данного материала мы осуществили настройку PHP для работы в командной строке, на практике рассмотрели примеры выполнения PHP-кода и запуска PHP скриптов в командной строке. А также нами был выполнен процесс установки composer`a.


  Теги: PHP, composer


Яндекс.Метрика