CLI в PHP


Как установить php-cli в Ubuntu / Debian

Установка:

Для установки php-cli в Ubuntu / Linux Mint / Debian, введите в Терминал :

Подробная информация о пакете:

Интерпретатор командной строки для языка сценариев PHP (по умолчанию)

Этот пакет предоставляет интерпретатор команд /usr/bin/php, полезный для тестирования PHP-скриптов из оболочки или выполнения общих задач сценариев оболочки.

Зависимости:

Интерпретатор командной строки для языка сценариев PHP

Вывод ошибок в PHP CLI

Подскажите как можно подкрутить вывод ошибок в интерфейсе PHP CLI.
Проблема такая.
Пишу парсеры новостников и мне стало жалко, что данные которые я утаскиваю — пропадают. Стал загонять данные в мускуль и для этого написал небольшой фетчер который работает из под bash. Фетчер этот работает через интерфейс CLI , ну и в случае ошибок (а код никогда сразу не выходит чистым) вываливает мне всё в терминал вместе с дампами переменных. Так как результат работы кода — массив с новостями и комментариями к нему — то я вот уже 10 минут наблюдаю как мне это льётся на экран и разумеется весь поток я даже прочитать не смогу )))

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

21.06.2020, 21:50

Вывод php ошибок
Добрый день! Подскажите пожалуйста как реализовать следующее: Вот к примеру в ВКонтакте, если.

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

Запретить вывод php ошибок в браузере
Как можно запретить вывод пхп ошибок? Пробовал в .htaccess поставить php_flag display_errors off .

PHP Cli
Привет всем, только начал изучать PHP,пишу на ОС Linux Ubuntu, для работы с PHP установил PHP Cli.

PHP CLI encoding
Здравствуйте! Не уверен что правильно выбрал тему, но проблема пока только в работе с php через.

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

В прошлой статье мы говорили о том, как превратить php скрипт в консольную команду для выполнения рутинных действий. А в этой посмотрим как разобрать аргументы командной строки в массив имя_аргумента => значение.

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

Вот скрипт, который разбирает аргументы командной строки и преобразует их в массив.

Создаем файл parse_cli.bat следующего содержания:

Заметьте, что и файл parse_cli.php и parse_cli.bat лежат в одной папке. Однако, если вы собираетесь использовать свою команду parse_cli из любой точки ОС, то parse_cli.bat нужно положить в папку доступную в PATH, и в самом parse_cli.bat нужно прописать полный путь к файлу parse_cli.php.

C:\>parse_cli —create-controller=HomeController —views-path=home —views=index.html,login.html,dashboard.html

Array
(
[create-controller] => HomeController
[views-path] => Array
(
[0] => home
)


[views] => Array
(
[0] => index.html
[1] => login.html
[2] => dashboard.html
)
)

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

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

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

    Функции argv и argc

    Самое простейшее что мы начнём писать будет выглядеть примерно так:

    Тут мы использовали системную переменную argс для получения количества всех параметров. Запомните, что нулевой параметр (имя скрипта) тут тоже учитывается.

    И системную переменную argv с массивом всех параметров.

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

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

    Разбираем параметры с функцией getopt


    Вот тут нам на помощь приходит крайне удобная функция разбора параметров: getopt

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

    Давайте напишем простой, но очень выразительный пример использования getopt, а потом, посмотрите как люди раньше мучались с регулярками, что бы разобрать командную строку 🙂

    Теперь запустим наш скрипт с параметром –help и порадуемся что хорошо поддерживаемую и понятную программу так легко написать

    Если вкратце, то getopt принимает все аргументы из командной строки и складывает валидные параметры в массив $options. А из уже получившегося массива мы можем получить все аргументы и в зависимости от них выдать результат.

    Давайте ещё добавим последний штрих, который должен быть во всех наших скриптах:
    1. Можно убрать расширение php
    2. В начало каждого скрипта добавим опцию для интерпритатора #!/usr/bin/env php
    3. Сделаем наши скрипты исполняемыми chmod +x backup.php

    После этого можно пользоваться получившимся скриптом как настоящей юникс-программой:

    CLI в PHP

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

    Впервые в качестве эксперимента CLI SAPI был включен в релиз PHP 4.2.0, и при запуске скрипта ./configure необходимо было явно указывать опцию —enable-cli . Начиная с PHP 4.3.0, CLI SAPI не является экспериментальным, и опция сборки —enable-cli присутствует по умолчанию. Вы можете отключить CLI SAPI при помощи опции —disable-cli .

    Мастер Йода рекомендует:  Как использовать отчеты по источникам трафика в Google Analytics, чтобы узнать, откуда приходят поль

    Что касается PHP 4.3.0, имя, расположение и существование бинарных модулей CLI/CGI зависит от того, как именно установлен PHP. По умолчанию при выполнении make создается как CGI, так и CLI модуль, в каталогах sapi/cgi/php и sapi/cli/php соответственно, внутри директории с исходными кодами PHP. Cледует заметить, что оба файла имеют одинаковое название: PHP. Что произойдет при выполнении make install , зависит от того, какие опции вы указали на стадии конфигурирования. В случае, если вы отдали предпочтение такому модулю SAPI как apxs, либо указали опцию —disable-cgi , модуль CLI будет скопирован в /bin/php при выполнении make install , в противном случае будет скопирован CGI-модуль. Например, если при запуске скрипта ./configure вы указали опцию —with—apxs , CLI-версия будет скопирована в /bin/php при выполнении make install . Если вы хотите перекрыть установленный CGI-модуль, используйте make install-cli после выполнения make install . В качестве альтернативы вы могли бы указать опцию —disable-cgi при выполнении скрипта ./configure .

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

    Дистрибутивы для Windows между версиями PHP 4.2.0 и PHP 4.2.3 включают в себя CLI-модуль как php-cli.exe , расположенный в той же директории, что и CGI-модуль php.exe . Начиная с 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-gtk. При сборке из исходных кодов вам необходимо указать опцию —enable-cli-win32 .

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

    Замечание: Соответствующая страница руководства Unix была добавлена в PHP 4.3.2. Вы можете увидеть ее, выполнив в консоли man php .

    Основные отличия CLI SAPI от остальных реализаций SAPI :


    В отличие от CGI SAPI заголовки не пишутся в поток вывода.

    Несмотря на то, что в CGI SAPI есть способ подавить HTTP-заголовки, в CLI SAPI нет возможности их включить.

    CLI по умолчанию запускается в режиме с подавлением сообщений, тем не менее, ключи -q и —no-header сохранены для обратной совместимости, что позволяет использовать написанные ранее CGI-скрипты.

    Текущая директория не изменяется на рабочую директорию скрипта. (Ключи -C и —no-chdir сохранены для обратной совместимости)

    Сообщения об ошибках выдаются в текстовом режиме (без HTML-форматирования).

    Некоторые настройки php.ini переопределены в CLI SAPI , поскольку они не имеют особого смысла при работе в командной строке:


    Таблица переопределяемых директив php.ini

    Благодаря значению TRUE в CLI SAPI вам всегда доступны переменные argc (количество аргументов при запуске приложения) и argv (массив текущих аргументов).

    Начиная с PHP 4.3.0, при использовании CLI SAPI переменные $argc и and $argv зарегистрированы и заполнены соответствующими значениями. В более ранних версиях создание этих переменных, так же, как и для CGI или модуля веб-сервера, требует значение on директивы register_globals . Независимо от версии PHP или статуса опции register_global они всегда доступны как элементы массива $_SERVER или $HTTP_SERVER_VARS . Например: $_SERVER['argv']

    Замечание: Эти директивы не могут быть инициализированы другими значениями из конфигурационного файла php.ini или любого другого (в случае, если он указан). Это является ограничением, поскольку указанные выше значения по умолчанию применяются после обработки конфигурационных файлов. Тем не менее, эти значения могут быть изменены во время работы скрипта (хотя это не имеет особого смысла для указанных директив, например, для register_argc_argv).

    Облегчена работа с консолью, благодаря следующим определенным константам:

    Таблица специфических CLI-констант

    Директива Значение по умолчанию в CLI SAPI Комментарий
    html_errors FALSE Бывает достаточно сложно прочитать в консоли сообщение об ошибке, когда оно наполнено бессмысленными HTML -тегами, поэтому значение по умолчанию данной опции всегда FALSE .
    implicit_flush TRUE Желательно, чтобы любой вывод print() , echo() , а также аналогичных функций немедлено отправлялся в стандартный поток вывода, а не попадал в буфер. Хотя вы все еще можете использовать буферизацию вывода, если хотите задержать вывод или манипулировать им.
    max_execution_time 0 (без ограничений) Из-за неограниченных возможностей использования PHP в командной строке максимальное время выполнения скрипта не ограничено. В то время, как приложения, написанные для веб, выполняются достаточно быстро, консольные приложения могут выполняться в течении длительного времени.
    register_argc_argv TRUE
    Константа Описание
    STDIN Уже открытый поток stdin . Константа хранит результат
    = fopen ( 'php://stdin' , 'r' );

    ?>

    Если вам необходимо прочитать строку из потока stdin , вы можете сделать это следующим образом:
    = trim ( fgets ( STDIN )); // читаем строку из STDIN
    fscanf ( STDIN , "%d\n" , $number ); // читаем число из STDIN
    ?>
    STDOUT Уже открытый поток stdout . Константа хранит результат
    = fopen ( 'php://stdout' , 'w' );

    ?>

    STDERR Уже открытый поток stderr . Константа хранит результат
    = fopen ( 'php://stderr' , 'w' );

    Имея все это, вы не должны самостоятельно открывать, например, поток для stderr , а просто используйте константу вместо дескриптора потока:

    php -r 'fwrite(STDERR, "stderr\n");'

    Также вам не надо закрывать эти потоки, PHP автоматически закрывает их после завершения скрипта.

    CLI SAPI не изменяет текущую директорию на директорию исполняемого скрипта!

    Пример, демонстрирующий отличие CGI SAPI :

    // Простейший тестовый скрипт под названием test.php
    echo getcwd (), "\n" ;
    ?>

    В случае, если используется CGI версия, результат работы будет следующим:

    $ pwd /tmp $ php -q another_directory/test.php /tmp/another_directory

    Это наглядно демонстрирует тот факт, что PHP изменяет текущую директорию на директорию исполняемого скрипта.

    $ pwd /tmp $ php -f another_directory/test.php /tmp

    Это позволяет писать более гибкие консольные скрипты на PHP.

    Замечание: CGI SAPI позволяет получить аналогичное CLI SAPI поведение в случае использования ключа -C при запуске из командной строки.

    Список опций, доступный при запуске PHP из командной строки, может быть получен в любой момент путем запуска PHP с ключом -h :

    Usage: php [options] [-f] [args. ] php [options] -r [args. ] php [options] [-- args. ] -s Отображает исходный код с цветной подсветкой -w Отображает исходный текст без комментариев и пробелов -f Исполняет -v Выводит информацию о версии PHP -c

    | Ищет файл php.ini в указанной директории -a Интерактивный запуск -d foo[=bar] Установить конфигурационную опцию foo значением 'bar' -e Генерация дополнительной информации для отладчика и профайлера -z Загрузить Zend-расширение . -l Проверить синтаксис -m Показать подключенные модули -i Выводит информацию о PHP -r Запустить PHP-код без использования -h Текущая справка args. Аргументы, передаваемые скрипту. Используйте -- args в случае, если первый аргумент начинается с '-' или сам скрипт читается из потока STDIN.


    CLI SAPI имеет три различных способа получения PHP-кода, который необходимо выполнить:


    Указать PHP на исполнение конкретного файла.

    php my_script.php php -f my_script.php


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

    Указать PHP-код для выполнения непосредственно в командной строке.

    php -r 'print_r(get_defined_constants());'

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

    Замечание: Посмотрите внимательно на пример: в нем нет начальных и конечных тегов! При использовании ключа -r они не нужны. Использование их в данном примере приведет к синтаксической ошибке.

    Предоставить PHP-код для выполнения посредством стандартного потока stdin .

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

    Работа с PHP-скриптами в командной строке

    По умолчанию php скрипты запускаются под «системной» сборкой php (5.3), например:

    Соответственно, команда php -v покажет информацию о «системной» сборке php, а не той, что активирована в панели управления хостингом:

    Сборки php, которые вам доступны в панели управления хостингом, расположены в /opt/php:

    Как запустить скрипт под определённой версий php?

    Обратите внимание: скрипты можно запускать и через php и через php-cgi. Например:

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

    Для запуска скрипта под версией «php 5.5» необходимо выполнить команду:

    • /opt/php/5.5/bin/php — путь к обработчику;
    • www/mysite.ru/info.php — путь к скрипту.

    видно, что скрипт запустился под «php 5.5».

    Аналогичным образом можно запустить скрипт под любой другой доступной сборкой php:

    • /opt/php/4.4.9/bin/php
    • /opt/php/5.1/bin/php
    • /opt/php/5.2/bin/php
    • /opt/php/5.3/bin/php
    • /opt/php/5.3-bx-optimized/bin/php
    • /opt/php/5.3-with-xcache/bin/php
    • /opt/php/5.4/bin/php
    • /opt/php/5.4-bx-optimized/bin/php
    • /opt/php/5.4-bx-optimized2/bin/php
    • /opt/php/5.4-with-xcache/bin/php
    • /opt/php/5.5/bin/php
    • /opt/php/5.5-bx-optimized/bin/php
    • /opt/php/5.6/bin/php
    • /opt/php/5.6-bx-optimized/bin/php
    • /opt/php/7.0/bin/php
    • /opt/php/7.0-bx-optimized/bin/php
    • /opt/php/7.1/bin/php


    Узнать подробную информацию о сборке php можно при помощи команды:

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

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

    Функции argv и argc

    Самое простейшее что мы начнём писать будет выглядеть примерно так:

    Тут мы использовали системную переменную argс для получения количества всех параметров. Запомните, что нулевой параметр (имя скрипта) тут тоже учитывается.

    И системную переменную argv с массивом всех параметров.

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

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

    Разбираем параметры с функцией getopt

    Вот тут нам на помощь приходит крайне удобная функция разбора параметров: getopt

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

    Давайте напишем простой, но очень выразительный пример использования getopt, а потом, посмотрите как люди раньше мучались с регулярками, что бы разобрать командную строку 🙂

    Теперь запустим наш скрипт с параметром –help и порадуемся что хорошо поддерживаемую и понятную программу так легко написать

    Если вкратце, то getopt принимает все аргументы из командной строки и складывает валидные параметры в массив $options. А из уже получившегося массива мы можем получить все аргументы и в зависимости от них выдать результат.

    Давайте ещё добавим последний штрих, который должен быть во всех наших скриптах:
    1. Можно убрать расширение php
    2. В начало каждого скрипта добавим опцию для интерпритатора #!/usr/bin/env php
    3. Сделаем наши скрипты исполняемыми chmod +x backup.php

    После этого можно пользоваться получившимся скриптом как настоящей юникс-программой:

    Как запустить PHP из командной строки Windows в WAMPServer

    Я новичок в php и хотел запустить php из командной строки. Я установил WAMP и установил «Системные переменные» в папку php (которая C:\wamp\bin\php\php5.4.3 ).

    Когда я иду в Run -> CMD -> Тип php -a и нажмите ввод, он говорит interactive mode enabled , Но когда я пишу echo 'Hi'; это ничего не показывает.

    Я даже не вижу ничего похожего на «php>», когда я печатаю php -a и нажмите ввод.

    Решение

    PHP CLI как его называют (php для интерфейса командной строки) называется php.exe
    Оно живет в c:\wamp\bin\php\php5.x.y\php.exe (где x и y — номера версий установленного вами php)

    Если вы хотите создавать php-скрипты для запуска из командной строки, тогда отлично, это просто и очень полезно.


    Создайте себе командный файл, как это, давайте назовем его phppath.cmd :

    + Изменить x.y.z к действительному имени папки для версии PHP, установленной в WAMPServer

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

    Теперь из командного окна перейдите в вашу исходную папку и запустите> phppath.

    Это должно работать как сон.

    Вот пример, который настраивает PHP Composer и PEAR, если требуется, и они существуют

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

    Или получить конкретную версию PHP, как это

    Другие решения

    Я помню, как однажды, когда я наткнулся на эту проблему несколько лет назад, это связано с тем, что окна не имеют readline, а значит, и не имеют интерактивной оболочки, для использования php интерактивного режима без поддержки readline, вы можете сделать это вместо этого:

    После входа в интерактивный режим введите с помощью открытия ( ) и закрытие ( ?> ) php tag и заканчиваем контролем Z ( ^Z ) который обозначает конец файла.

    Я также вспоминаю, что нашел решение из комментария пользователя сайта php: http://www.php.net/manual/en/features.commandline.interactive.php#105729

    Попробуйте использовать командный файл

    1. Открыть блокнот
    2. тип php -S localhost:8000
    3. сохранить файл как .bat расширение, server.bat
    4. Теперь нажмите на server.bat файл ваш сервер готов http://localhost:8000

    зависимость

    если вы получили ошибку, php не распознает внутреннюю или внешнюю команду
    затем перейдите в переменную окружения и отредактируйте путь к php.exe
    "C:\wamp\bin\php\php5.4.3"

    Проблема, которую вы описываете, звучит так, будто ваша версия PHP может отсутствовать в модуле PHP readline, из-за чего интерактивная оболочка не работает. Я основываю это на эта ошибка PHP представление.

    И посмотрите, появляется ли readline в выводе.

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

    Существует также phpsh проект, который предоставляет (лучшую) интерактивную оболочку для PHP. Тем не менее, некоторые люди имели проблемы с запуском его под Windows (я не пробовал
    это сам).

    редактировать:
    В соответствии с документация здесь , readline не поддерживается в Windows:

    Примечание. Это расширение недоступно на платформах Windows.

    Итак, если это правильно, ваши варианты:


    • Избегайте интерактивной оболочки и просто выполняйте код PHP в файлах из командной строки — это должно работать хорошо
    • Попробуйте заставить phpsh работать под Windows

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

    -r позволяет запускать код без использования тегов скрипта

    Вы можете запустить php-страницы, используя php.exe
    создайте php-файл с php-кодом и в cmd напишите "[PATH to php.ext]\php.exe [path_to_file]\file.php"

    ОБНОВЛЕНО
    После нескольких исследований лучшим решением было использовать эту информацию другой поток чтобы избежать ввода ctrl + z, а также от вывода осыпи.
    Итак, вместо php -a ты должен использовать call "php.exe" -f NAMED_SCRIPT.php

    OLD
    Readline невозможен в Windows, поэтому ни одна из существующих оболочек php, написанных на php, не будет работать. Но есть обходной путь, использующий интерактивный режим.

    2 общие проблемы здесь. Вы не можете видеть результат, пока не выполнит команду CTRL Z, чтобы указать финал кода / файла, такого как EOF. Когда вы это сделаете, в большинстве случаев будет напечатан результат и быстро закрытое окно. В любом случае вы вернетесь в cmd, а не в интерактивный режим.

    Сохраните это содержимое в файл .bat и определите свой PHP PATH в переменных Windows, или вместо этого измените php.exe на «полный путь к exe»:

    Это простой пакетный запуск — режим php.exe. Когда он запускает php, остановите скрипт, даже если пауза не написана, потому что он «в» интерактивном ожидании ввода. Когда вы нажимаете CTRL Z, получаете SIGSTEP (следующий шаг), а не SIGSTOP (закрытие, обычно CTRL + C), а затем читаете следующее вторжение, которое является рекурсивным вызовом самого .bat. Поскольку вы всегда находитесь в режиме PHP -a, нет команды выхода. Вы должны использовать CTRL + C или нажать крест на выходе с помощью мыши. (Нет alt + f4)

    Вы также можете использовать конвертер «Bat to Exe» для простоты использования.

    Следующее решение специально для окружающей среды:

    Это немного меня обмануло, я попробовал все остальные предложения, $ PATH и т. Д. Даже искал реестр Windows в поисках подсказок:

    Установка PHP 7.1 в Windows. Командная строка

    В htmlAcademy стартовал первый базовый интенсив по PHP и я работаю на нем наставником. Студентам в рамках интенсива предстоит поднять рабочее окружение и это заметка нацелена упростить эту нелегкую для новичка задачу. Есть разные способы поднятия полноценного LAMP стека, но мы пойдем классическим путем. Настроим все компоненты по отдельности (без применения готовых комбайнов) и начнем с PHP (обязательно будет заметка с рассмотрением готовых сборок LAMP). Поскольку я планирую работать наставникам на интесивах по PHP и дальше, я собираюсь написать подобные инструкции для повторения в других ОС (Linux, macOS). Как говорится, лучше один раз попотеть, но потом всем станет проще. Итак, приступаем.

    Загружаем PHP для Windows

    Заходим на официальный сайт и загружаем актуальную версию PHP. На момент написания заметки это – 7.1.4. На странице доступно несколько вариантов дистрибутивов. У меня Windows 7 x64, соответственно я выбираю zip архив с VC14 x64 Thread Safe.

    Обратите внимание, для загрузки доступна два варианта дистрибутива: Thread-Safe (TS) и Non-Thread-Safe (NTS). Выбор зависит от того как вы планируете применять интерпретатор. TS рекомендуется использовать для одного процесса веб-служб (например, настраивая через модуль mod_php для Apache). NTS рекомендуется для применения IIS (Internet Information Service) и альтернативных FastCGI веб-сервером (например, Apache с модулем FastCGI) и командной строки.

    Устанавливаем PHP 7.1

    Начнем готовить PHP для комфортной работе из командной строки. В предыдущем шаге вы загрузили архив с дистрибутивом PHP. В отличие от большинства программ, PHP поставляется в простом архиве, а не как инсталляционный пакет. Поэтому вам придется самостоятельно извлечь файлы в любую удобную для вас директорию. Я предпочитаю хранить подобные вещи в корне системного диска. Создайте в корне диска «C:» (или любом другом месте) директорию «php» и извлеките в нее содержимое загруженного архива.

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

    • go-pear.bat – сценарий для установки PEAR. Подробности о PEAR можно почитать в официальной документации.
    • php.exe – позволяет выполнять PHP сценарии из консоли;
    • php-win.exe - позволяет выполнять PHP сценарии без применения консоли;
    • php-cgi.exe – необходим для выполнения PHP кода в режиме FastCGI;
    • php7apache2_4.dll – модуль интеграции с веб-сервером Apache 2.4.X;
    • phpdbg.exe – отладчик;
    • php.ini-development – пример конфигурационного файла PHP для окружения разработчика (development)
    • php.ini-production – пример конфигурационного файла PHP для рабочего окружения (production)

    Подключаем конфигурационный файл

    Распакованный дистрибутив у нас есть, подключим для него конфигурационный файл. Мы собираемся ставить эксперименты, поэтому в качестве образца возьмем php.ini-development. Сделайте копию этого файла в директорию php (C:\php) с именем php.ini. ВАЖНО! Делайте именно копию, не простое переименование. За время разработки вам может потребоваться изменять конфигурационный файл и есть все шансы совершить ошибку, которую трудно будет обнаружить.


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

    Тестируем PHP из командной строки

    На этом шаге, так называемая «установка» завершена. Откройте консоль (cmd.exe, ярлык доступен в меню «Стандартные») и введите команду:

    Результат будет примерно таким:

    Результат подтверждает, что PHP работает. Попробуйте для примера создать новый файл-сценарий (я создал файл “test.php” прямо в корне диска “C:”) и поместить в него текст:

    Теперь попробуйте выполнить этот файл и посмотрите результат:

    Функция phpinfo() выводит информацию по конфигурации PHP в удобном виде. Об этой функции мы еще поговорим.

    Упрощаем обращение к php.exe

    PHP готов к работе, но согласитесь, каждый раз вбивать в консоле путь к php интерпретатору довольно неудобно. Чтобы упростить себе жизнь, внесем небольшие изменения в переменные среды. Запустим в панели управления аплет «Система» (или просто нажмем горячую клавишу «Windows + Pause Break». Затем нажмем на кнопку «Изменить параметры». В появившемся окне «Свойства системы», перейдем на закладку «Дополнительно». Найдите и нажмите на ней кнопку «Переменные среды».

    Находим в списке переменную «PATH» и нажимаем кнопку «Изменить», появится окно редактирования переменной. В поле «Значение переменной» нам необходимо дописать путь к директории с PHP. Перейдите в самый конец строки и через точку с запятой укажите путь к директории с PHP: C:\php;

    Все, нажимайте «Ok». Теперь перезагрузите систему (увы, придется). После перезагрузки Windows, обращаться к PHP можно будет просто: php.Например, чтобы вывести название версии достаточно написать:

    А чтобы интерпретировать файл test.php, расположенный в корне диска «C:»:

    Или вовсе запустить встроенный веб-сервер:

    Для тестирования откройте web-браузер попробуйте обратиться на http://127.0.0.1:8888/test.php. Обратите внимание, после параметра –t мы указываем путь к директории, которая станет корневой директорией веб-сервера. Все сценарии, расположенные в этой папке будут доступны для запроса с клиента. У меня на диске «C:» есть один файлик 1.php и именно его я и запрашиваю.

    Можно пойти немного дальше и ассоциировать расширение .php с интерпретатором, т.е. сделать все файлы с расширением php исполняемым по умолчанию. Для этого вводим в консоле несколько команд:

    Еще немного о переменных окружения

    Теперь давайте поговорим о том как PHP будет искать файл настроек конфигурации (вспоминаем, о php.ini). В документации приведена полная цепочка поиска. Во избежание лишних сложностей, рекомендую сразу добавить в переменные окружения новую – «PHPRC» и в качестве значения указать путь к директории с конфигурационным файлом. У меня конфиг располагается в тоже же директории, что и основные файлы php, следовательно в качестве значения переменной указываю –

    «C:\php». После внесения изменения потребуется перезагрузка.

    На этом у меня все. Первый часть мануала для новичков готова.

    PHP Cli

    18.12.2015, 09:58

    Вывод ошибок в PHP CLI
    Всем привет! Подскажите как можно подкрутить вывод ошибок в интерфейсе PHP CLI. Проблема такая.

    PHP CLI encoding
    Здравствуйте! Не уверен что правильно выбрал тему, но проблема пока только в работе с php через.

    CLI
    Спецификфация CLI. Чем она представлена в C#? Если можно подробнее? На экзамене надо бла-бла-бла.

    Перевод из C# в C++/CLI
    public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); .

    Добавить комментарий