Как запустить php скрипт windows

Интерактивное консольное приложение на PHP

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

Как запустить php-скрипт из командной строки?

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

Ваша ОС может выдать сообщение о том, что команда php ей неизвестна. В таком случае, и если вы уверены, что сам интерпретатор PHP установлен корректно, поможет указание полного пути к интерпретатору во время запуска скрипта.

Для UNIX-подобных систем:

Обратите внимание, что путь к интерпретатору PHP на вашей системе может быть другим, поэтому это тоже надо учесть. Например, для пользователей популярного пакета WampServer путь может быть таким:

Ну и наконец, чтобы не вводить полный путь каждый раз, следует добавить путь к интерпретатору в переменную окружения PATH вашей операционной системы.

Пишем простой скрипт для проверки кода ответа сервера

Для того, чтобы показать особенности работы скрипта из командной строки, напишем простое приложение, которое будет брать текстовый файл со ссылками и проверять код ответа сервера для каждой из этих ссылок. Причем предусмотрим возможность выбора нужного файла в интерактивном режиме, чтобы заодно узнать, как это делается.

Сразу после запуска скрипт выбирает все файлы с расширением *.txt из папки files . Затем выводит данный список пользователю в формате номер => имя и ждет от пользователя ввода номера интересующего его файла.

Получение всех файлов по маске делается просто, для этого воспользуемся стандартной функцией glob , а вот с чтением данных из консоли всё немного интересней. Дело в том, что после запуска скрипта из командной строки в нем открываются три стандартных потока: для вывода (STDOUT), ввода (STDIN) и ошибок (STDERR). Указатели на эти потоки доступны для скрипта в виде одноименных констант и работать с ними можно так же как, например, с обычными файлами. Таким образом, чтобы прочитать данные из консоли достаточно просто прочитать строку из потока ввода: fgets(STDIN) .

После того, как пользователь сделал свой выбор и проверки правильности выбора, мы можем открыть файл для чтения.

С помощью цикла while начинаем перебирать все строки в файле. Строки должны быть корректными url-адресами иначе мы не сможем определить правильный код ответа сервера. Заголовки для каждого адреса получаем с помощью стандартной функции get_headers , а код ответа находится обычно в первой строке заголовка.

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

Результатом работы такого приложения может быть, например, такой вывод:

Выводы

Вот и всё, простое и интерактивное консольное приложение на PHP готово. Мне не хотелось писать какую-нибудь совершенно бесполезную программу, поэтому этот скрипт подходит не только для изучения, но и для использования. Например, если сохранить в текстовый файл карту сайта, то скрипт поможет определить возможные ошибки с ссылками, а если его немного доработать, то даже укажет с какими именно :).

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

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

В данном материале мы рассмотрим такие вопросы как: настройка 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 не появляется на экране).

Читайте также:  Как удалить родные приложения windows 10

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

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

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

укажем полный путь до 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»

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

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

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

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

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

Снова выполняем команду с ключем «php —help»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Установка composer

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

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

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

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

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

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

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

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

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

Командная строка PHP в Microsoft Windows

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

Читайте также:  Интерпретатор питон для windows

PHP, запущенный из командной строки, может выполняться без каких-либо изменений в Windows.

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

Как PATH , так и PATHEXT являются важными системные переменными в Windows, поэтому важно не затереть их текущее значение, а только дописать нужные данные в конец.

Допишите расположение исполняемых файлов php ( php.exe , php-win.exe или php-cli.exe в зависимости от ваших предпочтений и версии PHP) в конец переменной окружения PATH . О том, как добавить вашу директорию к PATH читайте в соответствующем разделе FAQ.

Допишите .PHP расширение в конец переменной окружения PATHEXT . Это может быть сделано при изменении переменной PATH . Сделайте те же шаги, которые описаны в FAQ, но измените переменную PATHEXT вместо PATH .

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

Ассоциируйте расширение .PHP с конкретным типом файла. Это можно сделать выполнив следующую команду:

Ассоциируйте тип файла phpfile с соответствующим исполняемым PHP файлом. Это можно сделать выполнив команду:

Выполнение этих шагов позволит PHP скриптам выполняться из любой директории без необходимости указывать исполняемый PHP файл или расширение .PHP, а все параметры будут переданы в скрипт для обработки.

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

Пример #1 Изменения реестра

С этими изменениями команда может быть записана как:

Возникает небольшая проблема, если вы собираетесь использовать эту технику и используете ваши PHP-скрипты как фильтры командной строки, как в примере ниже:

Как запустить php скрипт windows

Указание конкретного файла для запуска.

Оба способа (с указанием опции -f или без) запустят файл my_script.php . Нет ограничений, какой файл запускать; в частности, файлы не обязаны иметь расширение .php .

Если необходимо передать аргументы в скрипт, то при использовании опции -f первым аргументом должен быть — .

Передать PHP-код напрямую в командной строке.

Необходимо быть особо осторожным при использовании этого способа, т.к. может произойти подстановка переменных оболочки при использовании двойных кавычек.

Внимательно прочтите пример: в нем нет открывающих и закрывающих тегов! Опция -r просто в них не нуждается, и их использование приведёт к ошибке разбора.

Передать запускаемый PHP-код через стандартный поток ввода ( stdin ).

Это даёт мощную возможность создавать PHP-код и передавать его запускаемому файлу, как показано в этом (вымышленном) примере:

Как и любое другое консольное приложение, бинарный файл PHP принимает аргументы, но PHP-скрипт также может получать аргументы. PHP не ограничивает количество аргументов, передаваемых в скрипт (оболочка консоли устанавливает некоторый порог количества символов, которые могут быть переданы; обычно этого лимита хватает). Переданные аргументы доступны в глобальном массиве $argv . Первый индекс (ноль) всегда содержит имя вызываемого скрипта из командной строки. Учтите, что если код вызывается на лету из командной строки с помощью опции -r, значением $argv[0] будет просто дефис ( — ). То же самое верно и для кода, переданного через конвейер из STDIN .

Вторая зарегистрированная глобальная переменная — это $argc , содержащая количество элементов в массиве $argv (а не количество аргументов, переданных скрипту).

Если передаваемые аргументы не начинаются с символа — , то особых проблем быть не должно. Передаваемый в скрипт аргумент, который начинается с — создаст проблемы, т.к. PHP решит, что он сам должен его обработать. Для предотвращения подобного поведения используйте разделитель списка аргументов — . После того, как этот разделитель будет проанализирован PHP, все последующие аргументы будут переданы в скрипт нетронутыми.

Пример #1 Запуск PHP-скрипта как консольного

Предполагая, что этот файл назван test и находится в текущей директории, можно сделать следующее:

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

Исполняемый PHP-файл может использоваться для запуска PHP-скриптов независимо от веб-сервера. В случае работы в Unix-подобной системе, необходимо добавить в первую строку файла #! (называемый также «shebang») чтобы указать, какая из программ должна запускать скрипт. На Windows-платформах можно назначить обработчик php.exe для файлов с расширениями .php или создать пакетный (.bat) файл для запуска скриптов посредством PHP. Строка, добавляемая в начале скрипта для Unix-систем, не влияет на их работу в ОС Windows, таким образом можно создавать кроссплатформенные скрипты. Ниже приведён простой пример скрипта, выполняемого из командной строки:

Читайте также:  Xiaomi mi max драйвера для windows 10

Пример #2 Скрипт, предназначенный для запуска из командной строки (script.php)

#!/usr/bin/php
if ( $argc != 2 || in_array ( $argv [ 1 ], array( ‘—help’ , ‘-help’ , ‘-h’ , ‘-?’ ))) <
?>

Это консольный PHP-скрипт, принимающий один аргумент.

Использование:
echo $argv [ 0 ]; ?>

Любое слово, которое вы хотели бы
напечатать. Опции —help, -help, -h,
или -? покажут текущую справочную информацию.

В приведённом выше скрипте в первой строке содержится shebang, указывающий что этот файл должен запускаться PHP. Работа ведётся с CLI -версией, поэтому не будет выведено ни одного HTTP -заголовка.

Скрипт сначала проверяет наличие обязательного одного аргумента (в дополнение к имени скрипта, который также подсчитывается). Если их нет, или если переданный аргумент был —help, -help, -h или -?, выводится справочное сообщение с использованием $argv[0] , которое содержит имя выполняемого скрипта. В противном случае просто выводится полученный аргумент.

Для запуска приведённого примера в Unix-системе, нужно сделать его исполняемым и просто выполнить в консоли script.php echothis или script.php -h. В Windows-системе можно создать пакетный файл:

Пример #3 Пакетный файл для запуска PHP-скрипта из командной строки (script.bat)

Также можно ознакомиться с расширением Readline для получения дополнительных функций, которые можно использовать для улучшения консольного PHP-скрипта.

В Windows запуск PHP можно настроить без необходимости указывать C:\php\php.exe или расширение .php . Подробнее эта тема описана в разделе Запуск PHP из командной строки в Microsoft Windows.

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

User Contributed Notes 7 notes

On Linux, the shebang (#!) line is parsed by the kernel into at most two parts.
For example:

1: #!/usr/bin/php
2: #!/usr/bin/env php
3: #!/usr/bin/php -n
4: #!/usr/bin/php -ddisplay_errors=E_ALL
5: #!/usr/bin/php -n -ddisplay_errors=E_ALL

1. is the standard way to start a script. (compare «#!/bin/bash».)

2. uses «env» to find where PHP is installed: it might be elsewhere in the $PATH, such as /usr/local/bin.

3. if you don’t need to use env, you can pass ONE parameter here. For example, to ignore the system’s PHP.ini, and go with the defaults, use «-n». (See «man php».)

4. or, you can set exactly one configuration variable. I recommend this one, because display_errors actually takes effect if it is set here. Otherwise, the only place you can enable it is system-wide in php.ini. If you try to use ini_set() in your script itself, it’s too late: if your script has a parse error, it will silently die.

5. This will not (as of 2013) work on Linux. It acts as if the whole string, «-n -ddisplay_errors=E_ALL» were a single argument. But in BSD, the shebang line can take more than 2 arguments, and so it may work as intended.

Summary: use (2) for maximum portability, and (4) for maximum debugging.

A gotcha when using #!/usr/bin/php at the start of the file as noted above:

if you originally edited the file on Windows and then attempt to use it on Unix, it won’t work because the #! line requires a Unix line ending. Bash gives you the following error message if it has DOS line endings:
«bash: /usr/local/bin/wpreplace.php: /usr/bin/php^M: bad interpreter: No such file or directory»

(In Emacs I used «CTRL-X ENTER f» then type «unix» and ENTER to convert)

In both Linux and Windows, when you execute a script in CLI with:

then PHP will ignore the very first line of your script if it starts with:

So, this line is not only absorbed by the kernel when the script file is executable, but it is also ignored by the PHP engine itself.

However, the engine will NOT ignore the first #! line of any included files withing your «outer» script.php.
Any «shebang» line in an included script, will result in simply outputting the line to STDOUT, just as any other text residing outside a . ?> block.

After the years I also have the fact that I have to use double quotation marks after php -r on Windows shell.

But in the Powershell you can use single or double quotation!

Оцените статью