git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@343527 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Alexey Pyltsyn
2017-11-30 07:37:41 +00:00
parent 61392dfd2c
commit 9399b0a213
4 changed files with 176 additions and 180 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 17fc359d7eb75d7d6199db77518924f2d351ed8b Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: lex -->
<!-- $Revision$ -->
<chapter xml:id="features.commandline" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Использование PHP в командной строке</title>
@ -13,10 +13,10 @@
<para>
Основная цель этого &cli.sapi; -
разработка консольных приложений на PHP.
Имеется несколько несущественных различий между
Имеется довольно много различий между
&cli.sapi; и другими видами <acronym>SAPI</acronym>, которые
будут рассмотрены в этой главе.
Будет полезно заметить, что &cli.sapi; и <acronym>CGI</acronym> -
Стоит отметить, что &cli.sapi; и <acronym>CGI</acronym> -
различные <acronym>SAPI</acronym>-интерфейсы, хотя в их поведении много общего.
</para>
@ -40,16 +40,16 @@
<filename>php</filename>.
Что произойдет при выполнении <command>make install</command>,
зависит от того, какие опции вы указали на стадии
конфигурирования. В случае, если вы отдали предпочтение
такому модулю <acronym>SAPI</acronym> как apxs,
либо указали опцию <option role="configure">--disable-cgi</option>,
конфигурирования. Если выбран модуль <acronym>SAPI</acronym>
во время выполнения, например, apxs, или используется опция
опция <option role="configure">--disable-cgi</option>,
модуль &cli; будет скопирован в <filename>{PREFIX}/bin/php</filename> при
выполнении <command>make install</command>, в противном случае
будет скопирован <acronym>CGI</acronym>-модуль. Например, если
вы указали опцию <option role="configure">--with-apxs</option>,
задана опция <option role="configure">--with-apxs</option>,
то при выполнении <command>make install</command>
&cli;-версия будет скопирована в <filename>{PREFIX}/bin/php</filename>.
Если вы хотите перекрыть установленный <acronym>CGI</acronym>-модуль,
Если вы хотите переопределить установку <acronym>CGI</acronym>-модуль,
используйте <command>make install-cli</command> после выполнения
<command>make install</command>. В качестве альтернативы
вы могли бы указать опцию <option role="configure">--disable-cgi</option>
@ -59,10 +59,10 @@
<note>
<para>
Поскольку обе опции, <option role="configure">--enable-cli</option>
и <option role="configure">--enable-cgi</option>, присутствуют
по умолчанию, одного присутствия строки
и <option role="configure">--enable-cgi</option>, включены
по умолчанию, просто налилчие
<option role="configure">--enable-cli</option> в команде
конфигурации недостаточно для того, чтобы &cli;-версия была установлена
конфигурации необязательно означает, что &cli; будет скопирован
в <filename>{PREFIX}/bin/php</filename> при выполнении
<command>make install</command>.
</para>
@ -75,7 +75,8 @@
Кроме того, в дистрибутив входит файл <filename>php-win.exe</filename>,
если PHP был сконфигурирован с помощью <option role="configure">--enable-cli-win32</option>.
Он полностью эквивалентен &cli;-версии, за исключением того,
что абсолютно ничего не выводит, что приводит к отсутствию консоли (окно терминала не появляется на экране).
что абсолютно ничего не выводит, и, таким образом, не предоставляет консоль
(окно терминала не появляется на экране).
</para>
<note>
@ -136,8 +137,8 @@
<listitem>
<para>
Некоторые настройки &php.ini; переопределены в &cli.sapi;,
поскольку они не имеют особого смысла при работе в командной строке:
Некоторые настройки &php.ini; переопределяются в &cli.sapi;,
поскольку они не имеют смысла при работе в командной строке:
</para>
<para>
<table>
@ -165,7 +166,7 @@
<entry>
Обычно в консоли желательно отображать вывод, например, из
из <function>print</function>,
<function>echo</function> и др.,
<function>echo</function> и других,
сразу же минуя буфер. Тем не менее, по-прежнему можно использовать
<link linkend="ref.outcontrol">буферизацию вывода</link> для
отложенного вывода или манипуляций с ним.
@ -176,8 +177,8 @@
<entry>0 (без ограничений)</entry>
<entry>
PHP, выполняемый в консоли, как правило используется для более широкого диапазона
задач, чем обычные web-скрипты. И так как они могут выполняться очень долго,
то максимальное время выполнения не ограничено.
задач, чем обычные веб-скрипты. И так как они могут выполняться очень долго,
то максимальное время выполнения неограничено.
</entry>
</row>
<row>
@ -187,16 +188,15 @@
<para>
Установка этой опции в значение &true; означает, что скрипты
запускаемые через &cli; <acronym>SAPI</acronym> всегда
имеют доступ к <emphasis>argc</emphasis>(количество аргументов при запуске приложения)
имеют доступ к <emphasis>argc</emphasis> (количество аргументов, переданных приложению)
и <emphasis>argv</emphasis> (массив текущих аргументов).
</para>
<para>
При использовании &cli; <acronym>SAPI</acronym>
переменные <varname>$argc</varname> и <varname>$argv</varname>
автоматически заполняются соответствующими значениями. Эти
значения можно также найти в массиве <varname>$_SERVER</varname>.
Пример:
<varname>$_SERVER['argv']</varname>
значения можно также найти в массиве <varname>$_SERVER</varname>,
например: <varname>$_SERVER['argv']</varname>.
</para>
</entry>
</row>
@ -228,10 +228,10 @@
<para>
Эти директивы не могут быть инициализированы другими значениями
из конфигурационного файла &php.ini; или любого другого (в случае, если он указан).
Это является ограничением, поскольку указанные выше значения по умолчанию применяются
Это ограничение связано с тем, что значения применяются
после обработки конфигурационных файлов. Тем не менее, эти значения
могут быть изменены во время работы скрипта (хотя это не имеет особого смысла
для указанных директив, например, для <link linkend="ini.register-argc-argv">register_argc_argv</link>).
для всех них, например <link linkend="ini.register-argc-argv">register_argc_argv</link>).
</para>
</note>
<note>
@ -246,7 +246,7 @@
<listitem>
<para>
Для облегчения работы в консольном окружении было определено
Для облегчения работы в окружении оболочки было определено
некоторое количество констант для
<link linkend="features.commandline.io-streams">потоков ввода/вывода</link>.
</para>
@ -259,7 +259,7 @@
</para>
<example>
<title>
Пример, демонстрирующий отличие <acronym>CGI</acronym> <acronym>SAPI</acronym>:
Пример, демонстрирующий разницу с <acronym>CGI</acronym> <acronym>SAPI</acronym>:
</title>
<programlisting role="php">
<![CDATA[
@ -282,7 +282,7 @@ $ php -q another_directory/test.php
]]>
</screen>
<para>
Это наглядно демонстрирует тот факт, что PHP изменяет
Это наглядно демонстрирует, что PHP изменяет
текущую директорию на директорию исполняемого скрипта.
</para>
<para>
@ -298,7 +298,7 @@ $ php -f another_directory/test.php
]]>
</screen>
<para>
Это позволяет писать более гибкие консольные скрипты на PHP.
Это обеспечивает большую гибкость при написании консольных скриптов на PHP.
</para>
</example>
<note>
@ -321,8 +321,8 @@ $ php -f another_directory/test.php
<titleabbrev>Опции</titleabbrev>
<para>
Список опций, доступный при запуске PHP из командной строки,
может быть получен в любой момент путем запуска PHP с ключом <option>-h</option>:
Список опций командной строки, предоставляемых PHP,
могут быть получены в любой момент, запустив PHP с ключом <option>-h</option>:
<screen>
<![CDATA[
Usage: php [options] [-f] <file> [--] [args...]
@ -332,39 +332,39 @@ Usage: php [options] [-f] <file> [--] [args...]
php [options] -- [args...]
php [options] -a
-a Интерактивный запуск
-c <path>|<file> Ищет файл php.ini в указанной директории
-n Не использовать файл php.ini
-d foo[=bar] Установить конфигурационную опцию foo значением 'bar'
-e Генерация дополнительной информации для отладчика и профайлера
-f <file> Парсит и исполняет <file>
-h Текущая справка
-i Выводит информацию о PHP
-l Проверка синтаксиса (lint)
-m Показать скомпилированные модули
-r <code> Запустить PHP-код без использования <?..?>
-B <begin_code> Запустить PHP <begin_code> до обработки введенного кода
-R <code> Запустить PHP <code> для каждой введенной строки
-F <file> Парсить и выполнять <file> для каждой введенной строки
-E <end_code> Запустить PHP <end_code> после обработки всех введенных строк
-H Спрятать все переданные аргументы от внешних инструментов
-S <addr>:<port> Запустить со встроенным веб-сервером.
-t <docroot> Указать корень документов <docroot> для встроенного веб-сервера.
-s Отображает исходный код с цветной подсветкой
-v Выводит информацию о версии PHP
-w Отображает исходный текст без комментариев и пробелов
-z <file> Загрузить Zend-расширение <file>.
-a Run interactively
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse and execute <file>.
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-r <code> Run PHP <code> without using script tags <?..?>
-B <begin_code> Run PHP <begin_code> before processing input lines
-R <code> Run PHP <code> for every input line
-F <file> Parse and execute <file> for every input line
-E <end_code> Run PHP <end_code> after processing all input lines
-H Hide any passed arguments from external tools.
-S <addr>:<port> Run with built-in web server.
-t <docroot> Specify document root <docroot> for built-in web server.
-s Output HTML syntax highlighted source.
-v Version number
-w Output source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
args... Аргументы, передаваемые скрипту. Используйте -- args в случае, если
первый аргумент начинается с '-' или сам скрипт читается из потока STDIN.
args... Arguments passed to script. Use -- args when first argument
starts with - or script is read from stdin
--ini Показывать имена конфигурационных файлов
--ini Show configuration file names
--rf <name> Показать информацию о функции <name>.
--rc <name> Показать информацию о классе <name>.
--re <name> Показать информацию о расширении <name>.
--rz <name> Показать информацию о Zend-расширении <name>.
--ri <name> Показать конфигурацию для расширения <name>.
--rf <name> Show information about function <name>.
--rc <name> Show information about class <name>.
--re <name> Show information about extension <name>.
--rz <name> Show information about Zend extension <name>.
--ri <name> Show configuration for extension <name>.
]]>
</screen>
</para>
@ -386,7 +386,7 @@ Usage: php [options] [-f] <file> [--] [args...]
<entry>--interactive</entry>
<entry>
<para>
PHP запускается интерактивно. Подробнее смотрите в разделе
Запустить PHP в интерактивном режиме. Для получения дополнительной информации см.
<link linkend="features.commandline.interactive">Интерактивная консоль</link>.
</para>
</entry>
@ -434,9 +434,9 @@ Usage: php [options] [-f] <file> [--] [args...]
<entry>--php-ini</entry>
<entry>
<para>
При помощи этой опции можно указать директорию для поиска
конфигурационного файла &php.ini; либо непосредственно
указать на сам <literal>INI</literal>-файл (название которого может
Указывает директорию для поиска
конфигурационного файла &php.ini; либо сам пользовательский
<literal>INI</literal>-файл (название которого может
отличаться от стандартного &php.ini;), например:
</para>
<para><informalexample>
@ -450,7 +450,7 @@ $ php -c /custom/directory/custom-file.ini my_script.php
</informalexample></para>
<para>
Если эта опция не указана, поиск &php.ini; будет осуществлен
в <link linkend="configuration.file">обычном месте</link>.
в <link linkend="configuration.file">местах по умолчанию</link>.
</para>
</entry>
</row>
@ -468,8 +468,8 @@ $ php -c /custom/directory/custom-file.ini my_script.php
<entry>--define</entry>
<entry>
<para>
Устанавливает специальное значение для каждой из
конфигурационных переменных, доступных в &php.ini;. Синтаксис выглядит следующим образом:
Устанавливает пользовательское значение для каждой из
конфигурационных опций, доступных в &php.ini;. Синтаксис выглядит следующим образом:
<screen>
<![CDATA[
-d configuration_directive[=value]
@ -518,13 +518,13 @@ string(15) "doesntmakesense"
<entry>
<para>
Парсит и исполняет файл, указанный в опции <option>-f</option>.
Этот переключатель необязателен и может быть убран. Достаточно
передавать только имя запускаемого файла.
Этот параметр необязателен и может быть опущен - достаточно
просто указать имя запускаемого файла.
</para>
<note>
<para>
Для передачи аргументов в скрипт, первый аргумент должен быть
<literal>--</literal>, иначе PHP воспримет их как свои опции.
<literal>--</literal>, иначе PHP будет интепретировать их как свои опции.
</para>
</note>
</entry>
@ -533,20 +533,18 @@ string(15) "doesntmakesense"
<entry>-h и -?</entry>
<entry>--help и --usage</entry>
<entry>
Выводит список актуальных опций вместе с несколькими однострочными
описаниями.
Выводит список опций командной строки с однострочным описанием того, что они делают.
</entry>
</row>
<row>
<entry>-i</entry>
<entry>--info</entry>
<entry>
Использование этой опции приводит к вызову функции
<function>phpinfo</function> и выводу результирующей
информации. В случае, если PHP работает некорректно, будет
весьма логично выполнить <command>php -i</command> и
посмотреть, выводятся ли сообщения об ошибке до информационных
таблиц или даже вместо них. Учтите, что в случае использования
Вызывает <function>phpinfo</function> и выводить ее результат.
В случае, если PHP работает некорректно, рекомендуется
выполнить <command>php -i</command> и
посмотреть, выводятся ли сообщения об ошибках до или
вместо информационных таблиц. Учитывайте, что в случае использования
<acronym>CGI</acronym>-модуля весь вывод будет в формате
<acronym>HTML</acronym> и, как следствие, очень большим.
</entry>
@ -560,20 +558,19 @@ string(15) "doesntmakesense"
PHP-кода на наличие синтаксических ошибок.
В случае успешной проверки будет напечатана следующая фраза:
"<literal>No syntax errors detected in &lt;filename&gt;</literal>",
- и код возврата будет равен <literal>0</literal>. А в случае
неудачи - текст
"<literal>Errors parsing &lt;filename&gt;</literal>" вместе с
внутренними сообщениями парсера и код возврата будет равен <literal>-1</literal>.
а код возврата будет равен <literal>0</literal>.
При неудачной проверки будет выведено "<literal>Errors parsing &lt;filename&gt;</literal>"
вместе с внутренними сообщениями парсера, а код возврата будет равный <literal>-1</literal>.
</para>
<para>
Проверка исходного кода при помощи данной опции не находит
фатальных ошибок (например, таких как вызов неопределенных
функций). Используйте опцию <option>-f</option>, если вы
Данная опция не будет обнаруживать
фатальные ошибки (например, вызов неопределенных функций).
Используйте опцию <option>-f</option>, если вы
хотите проверить код на наличие фатальных ошибок.
</para>
<note>
<para>
Эта опция несовместима с опцией <option>-r</option>.
Эта опция не работает с опцией <option>-r</option>.
</para>
</note>
</entry>
@ -583,7 +580,7 @@ string(15) "doesntmakesense"
<entry>--modules</entry>
<entry>
<para><example>
<title>Вывод встроенных (и загружаемых) PHP и Zend модулей</title>
<title>Вывод встроенных (и загруженных) PHP и Zend модулей</title>
<screen>
<![CDATA[
$ php -m
@ -613,8 +610,8 @@ ctype
Позволяет выполнять PHP-код, указанный
непосредственно в командной строке. Открывающие и закрывающие
PHP-теги (<literal>&lt;?php</literal> и <literal>?&gt;</literal>)
<emphasis role="strong">не нужны</emphasis> и, более того,
приводят к синтаксической ошибке.
<emphasis role="strong">не нужны</emphasis> и будут
приводит к синтаксической ошибке, если они присутствуют.
</para>
<note>
<para>
@ -633,12 +630,11 @@ Parse error: syntax error, unexpected '=' in Command line code on line 1
</screen>
</example>
<para>
Проблема заключается в том, что sh/bash выполняет автоматическую
Проблема здесь заключается в том, что sh/bash выполняет автоматическую
подстановку переменных в случае, если используются двойные кавычки
(<literal>"</literal>). Поскольку переменная <varname>$foo</varname>
вряд ли определена, она заменяется пустой строкой, так что
передаваемый PHP-код для выполнения выглядит следующим
образом:
вряд ли определена, она заменяется пустой строкой, что приводит к тому,
что передаваемый PHP-код для выполнения выглядит следующим образом:
</para>
<informalexample>
<screen>
@ -651,7 +647,7 @@ $ php -r " = get_defined_constants();"
<para>
Правильным решением в данном случае будет использование
одиночных кавычек <literal>'</literal>, поскольку автоматическая
подстановка переменных, заключенных в одиночные кавычки, в sh/bash не происходит.
подстановка переменных, заключенных в одинарные кавычки, в sh/bash не происходит.
</para>
<example>
<title>Использование одинарных кавычек для предотвращения
@ -675,7 +671,7 @@ array(370) {
</example>
<para>
При использовании оболочки, отличной от sh/bash, могут возникнуть
другие вопросы. В таком случае необходимо создать отчет о возникшей ошибке на сайте
другие проблемы. В таком случае необходимо создать отчет о возникшей ошибке на сайте
<link xlink:href="&url.php.bugs;">&url.php.bugs;</link>.
Можно столкнуться с проблемами при попытке получить доступ
к переменным оболочки или при работе с экранирующими обратными слешами.
@ -690,7 +686,7 @@ array(370) {
</note>
<note>
<para>
Эта опция предназначена только для самых базовых вещей.
Эта опция предназначена только для самого простого кода.
Поэтому некоторые конфигурационные директивы (например,
<link linkend="ini.auto-prepend-file">auto_prepend_file</link>
и <link linkend="ini.auto-append-file">auto_append_file</link>)
@ -713,7 +709,7 @@ array(370) {
<entry>--process-code</entry>
<entry>
<para>
PHP-код, выполняемый для каждой введенной строки. Добавлена в PHP 5.
PHP-код, выполняемый для каждой строки ввода. Добавлена в PHP 5.
</para>
<para>
В этом режиме есть две специальные переменные:
@ -729,7 +725,7 @@ array(370) {
<entry>--process-file</entry>
<entry>
<para>
PHP-файл, выполняемый для каждой введенной строки. Добавлена в PHP 5.
PHP-файл, выполняемый для каждой строки ввода. Добавлена в PHP 5.
</para>
</entry>
</row>
@ -768,9 +764,9 @@ $ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Все
<entry>-t</entry>
<entry>--docroot</entry>
<entry>
Указывает корень документов для
Указывает корень документа для
<link linkend="features.commandline.webserver">встроенного веб-сервера</link>.
Доступна, начиная с версии PHP 5.4.0.
Доступна с PHP 5.4.0.
</entry>
</row>
<row>
@ -778,11 +774,11 @@ $ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Все
<entry>--syntax-highlight и --syntax-highlighting</entry>
<entry>
<para>
Показать исходный код с подсвеченным разными цветами синтаксисом.
Показать исходный код с подсветкой синтаксиса.
</para>
<para>
Эта опция использует внутренний механизм для парсинга файла
и записи в стандартный поток вывода подсвеченную HTML-версию
Эта опция использует внутренний механизм для разбора файла
и записи в стандартный поток вывода подсвеченной версии
этого файла. Учтите, что все что она делает, это генерирует
блок <literal>&lt;code&gt; [...] &lt;/code&gt;</literal>
HTML-тегов, без HTML-заголовков.
@ -832,11 +828,10 @@ Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
<entry>
<para>
Загружает Zend-расширение. Если передано только имя файла,
PHP попытается загрузить это расширение из вашего системного
пути поиска библиотек по умолчанию (обычно он указывается в
<filename>/etc/ld.so.conf</filename> в Linux системах).
Передача файла с абсолютным путем не будет использовать данный
системный путь поиска. Относительное имя файла, содержащее
PHP попытается загрузить это расширение из пути библиотек
по умолчанию (обычно указывается в <filename>/etc/ld.so.conf</filename> в
Linux системах). Передача файла с абсолютным путем не будет использовать
системный путь поиска библиотеки. Относительное имя файла, содержащее
директорию, укажет PHP подгрузить расширение относительно
текущей директории.
</para>
@ -848,7 +843,7 @@ Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
<entry>
<para>
Показывает имена конфигурационных файлов и сканируемые директории.
Доступна, начиная с версии PHP 5.2.3.
Доступна с PHP 5.2.3.
<example>
<title>Пример <literal>--ini</literal></title>
<programlisting role="shell">
@ -869,9 +864,9 @@ Additional .ini files parsed: (none)
<entry>--rfunction</entry>
<entry>
<para>
Показывают информацию об указанной функции или методе
Показывает информацию об указанной функции или методе
класса (например, количество и названия параметров).
Доступна, начиная с версии PHP 5.1.2.
Доступна с PHP 5.1.2.
</para>
<para>
Эта опция доступна только в случае если PHP был скомпилирован
@ -903,7 +898,7 @@ Function [ <internal> public function var_dump ] {
<para>
Показывает информацию об указанном классе
(список констант, свойств и методов).
Доступна, начиная с версии PHP 5.1.2.
Доступна с PHP 5.1.2.
</para>
<para>
Эта опция доступна только в случае если PHP был скомпилирован
@ -986,7 +981,7 @@ Extension [ <persistent> extension #19 json version 1.2.1 ] {
<entry>
<para>
Показывает информацию о конфигурации указанного Zend-расширения
(та же информация, что показывается функцией <function>phpinfo</function>).
(та же информация, которая возвращается <function>phpinfo</function>).
Доступна, начиная с версии PHP 5.4.0.
</para>
</entry>
@ -997,7 +992,7 @@ Extension [ <persistent> extension #19 json version 1.2.1 ] {
<entry>
<para>
Показывает информацию о конфигурации указанного расширения
(та же информация, что показывается функцией <function>phpinfo</function>).
(та же информация, которая возвращается <function>phpinfo</function>).
Доступна, начиная с версии PHP 5.2.2.
Конфигурацию ядра можно узнать, указав в качестве имени
расширения значение "main".
@ -1052,7 +1047,7 @@ date.sunrise_zenith => 90.583333 => 90.583333
<orderedlist>
<listitem>
<para>
Указывание конкретного файла для запуска.
Указание конкретного файла для запуска.
</para>
<informalexample>
<screen>
@ -1064,9 +1059,9 @@ $ php -f my_script.php
</screen>
</informalexample>
<para>
Оба способа (с указыванием опции <option>-f</option> или без) запустят
Оба способа (с указанием опции <option>-f</option> или без) запустят
файл <filename>my_script.php</filename>. Нет ограничений, какой
файл запускать, и PHP-скрипты не обязаны иметь
файл запускать; в частности, файлы не обязаны должны иметь
расширение <literal>.php</literal>.
</para>
<note>
@ -1096,8 +1091,8 @@ $ php -r 'print_r(get_defined_constants());'
<note>
<para>
Внимательно прочтите пример: в нем нет открывающих и закрывающих тегов!
Опция <option>-r</option> просто в них не нуждается. Их использование
приведет к ошибке парсера.
Опция <option>-r</option> просто в них не нуждается, и их использование
приведет к ошибке разбора.
</para>
</note>
</listitem>
@ -1108,7 +1103,7 @@ $ php -r 'print_r(get_defined_constants());'
</para>
<para>
Это дает мощную возможность создавать PHP-код и
скармливать его запускаемому файлу, как показано в этом
передавать его запускаемому файлу, как показано в этом
(вымышленном) примере:
</para>
<informalexample>
@ -1154,7 +1149,7 @@ $ some_application | some_filter | php | sort -u > final_output.txt
создаст проблемы, так как PHP решит, что он сам должен его
обработать. Для предотвращения подобного поведения
используйте разделитель списка аргументов <literal>--</literal>.
После того как этот разделитель будет прочитан PHP, все последующие
После того как этот разделитель будет проанализирован PHP, все последующие
аргументы будут переданы в скрипт нетронутыми.
</para>
@ -1202,7 +1197,7 @@ var_dump($argv);
]]>
</programlisting>
<para>
Подразумевая что этот файл называется <filename>test</filename>
Предполагая, что этот файл назван <filename>test</filename>
и находится в текущей директории, можно сделать следующее:
</para>
<screen>
@ -1230,13 +1225,11 @@ array(4) {
<para>
Исполняемый PHP-файл может использоваться для запуска PHP-скриптов
независимо от веб-сервера. В случае, работы в Unix-подобной системе,
необходимо добавить ко всем скриптам особую строку
<literal>#!</literal> (называемую также "shebang") в начало файла
и сделать их исполняемыми, чтобы указать, какая из программ должна
обрабатывать эти скрипты. На Windows-платформах можно
назначить обработчик <filename>php.exe</filename> для файлов
с расширениями <literal>.php</literal> либо создать пакетный
независимо от веб-сервера. В случае работы в Unix-подобной системе,
необходимо добавить в первую строку файла <literal>#!</literal> (называемый также "shebang")
чтобы указать, какая из программ должна запускать скрипт.
На Windows-платформах можно назначить обработчик <filename>php.exe</filename> для файлов
с расширениями <literal>.php</literal> или создать пакетный
(.bat) файл для запуска скриптов посредством PHP.
Строка, добавляемая в начале скрипта для Unix-систем,
не влияет на их работу в ОС Windows, таким образом можно
@ -1275,14 +1268,14 @@ if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
</para>
<para>
Скрипт приведенный выше включается в себя специальную Unix строку,
указывающую на его запуск с помощью PHP. Работа ведется с &cli;-версией,
В приведенном выше скрипте в первой строке содержится shebang,
указывающий что этот файл должен запускаться PHP. Работа ведется с &cli;-версией,
поэтому не будет выведено ни одного <acronym>HTTP</acronym>-заголовка.
</para>
<para>
Также приведенный пример проверяет количество переданных аргументов.
В случае, если их больше или меньше одного, а также в случае, если переданный
Скрипт сначала проверяет наличие обязательного одного аргумента (в дополнение к
имени скрипта, который также подсчитывается). Если их нет, или если переданный
аргумент был <option>--help</option>, <option>-help</option>,
<option>-h</option> или <option>-?</option>, выводится
справочное сообщение с использованием <varname>$argv[0]</varname>, которое содержит
@ -1290,7 +1283,7 @@ if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
</para>
<para>
Для запуска приведенного примера в Unix-системе, необходимо сделать
Для запуска приведенного примера в Unix-системе, нужно сделать
его исполняемым и просто выполнить в консоли
<command>script.php echothis</command> или
<command>script.php -h</command>. В Windows-системе можно
@ -1310,12 +1303,12 @@ if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
</para>
<para>
Предполагая, что скрипт называется
<filename>script.php</filename> и полный путь к &cli;
<filename>php.exe</filename> совпадает с
<filename>C:\php\php.exe</filename>, приведенный пакетный файл
запустит скрипт с переданными параметрами:
<command>script.bat echothis</command> либо
Предполагая, что вышеприведенный скрипт называется
<filename>script.php</filename>, а полный путь к &cli;
<filename>php.exe</filename> находится в
<filename>C:\php\php.exe</filename>, этот пакетный файл
запустит его с переданными параметрами:
<command>script.bat echothis</command> или
<command>script.bat -h</command>.
</para>
@ -1328,7 +1321,7 @@ if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
<para>
В Windows запуск PHP можно настроить без
необходимости указывать <filename>C:\php\php.exe</filename> и
необходимости указывать <filename>C:\php\php.exe</filename> или
расширение <literal>.php</literal>.
Подробнее эта тема описана в разделе
<link linkend="install.windows.legacy.commandline">Запуск PHP из
@ -1344,7 +1337,7 @@ if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
<para>
Модуль &cli.sapi; определяет несколько констант для потоков
ввода/вывода для упрощения работы с командной строкой.
ввода/вывода, чтобы упростить работу с командной строкой.
</para>
<para>
@ -1362,7 +1355,7 @@ if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
<entry><constant>STDIN</constant></entry>
<entry>
<para>Уже открытый поток ввода (<literal>stdin</literal>).
Он предотвращает необходимость его открывать следующим способом:
Это предотвращает необходимость его открывать следующим способом:
<programlisting role="php">
<![CDATA[
<?php
@ -1386,7 +1379,7 @@ fscanf(STDIN, "%d\n", $number); // читает число из STDIN
<entry><constant>STDOUT</constant></entry>
<entry><para>
Уже открытый поток вывода (<literal>stdout</literal>).
Он предотвращает необходимость его открывать следующим способом:
Это предотвращает необходимость его открывать следующим способом:
<programlisting role="php">
<![CDATA[
<?php
@ -1401,7 +1394,7 @@ $stdout = fopen('php://stdout', 'w');
<entry>
<para>
Уже открытый поток ошибок (<literal>stderr</literal>).
Он предотвращает необходимость его открывать следующим способом:
Это предотвращает необходимость его открывать следующим способом:
<programlisting role="php">
<![CDATA[
<?php
@ -1426,13 +1419,13 @@ $stderr = fopen('php://stderr', 'w');
php -r 'fwrite(STDERR, "stderr\n");'
]]>
</programlisting>
Вам также не нужно их вручную закрывать, они будут закрыты PHP
Вам не нужно явно закрывать эти потоки, они будут закрыты PHP
автоматически при окончании вашего скрипта.
</para>
<note>
<para>
Эти константы недоступны, если PHP считывает запускаемый скрипт
Эти константы недоступны, если считывается PHP-скрипт
из <literal>stdin</literal>.
</para>
</note>
@ -1445,14 +1438,14 @@ php -r 'fwrite(STDERR, "stderr\n");'
<para>
Начиная с версии PHP 5.1.0, модуль &cli.sapi; предоставляет
интерактивную консоль, доступную с помощью опции
интерактивную консоль, используя опцию
<option>-a</option>, если PHP был скомпилирован с опцией
<option role="configure">--with-readline</option>.
</para>
<para>
Интерактивная консоль позволяет непосредственно набирать и
одновременно выполнять PHP-код.
Используя интерактивную консоль, можно ввести и выполнить
непосредственно PHP-код.
</para>
<example>
@ -1495,7 +1488,7 @@ php > strp
]]>
</programlisting>
<simpara>
Если доступно только одно дополнение, одиночное нажатие
Когда есть только одно дополнение, одиночное нажатие
Tab дополнит оставшийся текст на той же самой строке:
</simpara>
<programlisting role="shell">
@ -1504,8 +1497,8 @@ php > strpt[TAB]ime(
]]>
</programlisting>
<simpara>
Дополнение также работает для элементов, которые были объявлены
в течении данной интерактивной сессии:
Дополнение также работает для имен, которые были объявлены
в течение данной интерактивной сессии:
</simpara>
<programlisting role="shell">
<![CDATA[
@ -1516,12 +1509,11 @@ php > $foo[TAB]ThisIsAReallyLongVariableName
</example>
<para>
Интерактивная консоль хранит историю команд, для доступа к ней
Интерактивная консоль хранит историю команд, для доступа к которой
можно использовать стрелки вверх и вниз.
История хранится в файле <filename>~/.php_history</filename>.
</para>
<para>
Начиная с версии PHP 5.4.0, модуль &cli.sapi; предоставляет
две новые настройки в &php.ini;:<parameter>cli.pager</parameter> и
@ -1549,7 +1541,7 @@ hello world :>
]]>
</programlisting>
<simpara>
Используя обратные апострофы можно задать PHP код, который
Используя обратные апострофы можно задать PHP-код, который
выполнится в приглашении на ввод команды:
</simpara>
<programlisting role="shell">
@ -1609,8 +1601,8 @@ php >
<row>
<entry><literal>\&gt;</literal></entry>
<entry>
Отображает символ запроса. По умолчанию это символ <literal>&gt;</literal>,
но он может измениться, когда мы находимся внутри незакрытых блока или строки.
Указывает символ приглашения. По умолчанию это символ <literal>&gt;</literal>,
но можно изменить, когда оболочка находится внутри незакрытыго блока или строки.
Возможные символы: <literal>' " { ( &gt;</literal>
</entry>
</row>
@ -1644,33 +1636,37 @@ php >
<warning>
<para>
Этот web-сервер был разработан для помощи в разработке. Он также может
Этот веб-сервер был разработан для помощи в разработке. Он также может
быть полезным в тестовых целях или для демонстрации приложения, запускаемого
в полностью контролируемом окружении. Он не выполняет функции полноценного
web-сервера и не должен использоваться в общедоступных сетях.
веб-сервера и не должен использоваться в общедоступных сетях.
</para>
</warning>
<para>
Начиная с версии PHP 5.4.0 модуль &cli.sapi; содержит встроенный web-сервер.
Начиная с версии PHP 5.4.0, модуль &cli.sapi; содержит встроенный веб-сервер.
</para>
<para>
Если запрос блокирующий, то PHP приложения будут приостановлены.
Веб-сервер выполняет только один однопоточный процесс, поэтому приложения PHP
будут останавливаться, если запрос заблокирован.
</para>
<para>
URI запросы обслуживаются из текущей директории, в которой был запущен PHP,
если не используется опция -t для явного указания корневого документа.
Если URI запроса не указывает на определенный файл, то будет возвращен
либо index.php либо index.html в указанной директории. Если оба файла
отсутствуют, то возвращается 404 код ответа.
index.php или index.html в указанной директории. Если ни один из файлов не существует,
то поиск этих файлов будет продолжен в родительской директории и так далее до тех пор,
пока они не будут найдены или был достигнут корень документа. Если найден
index.php или index.html, он возвращается, а в $_SERVER['PATH_INFO'] будет
находится последняя часть URL. В противном случае возвращается 404 код ответа.
</para>
<para>
Если PHP-файл указывается в командной строке, когда запускается веб-сервер,
то он рассматривается как скрипт "маршрутизации". Скрипт выполняется
в самом начале после каждого HTTP-запроса. Если этот скрипт возвращает
то он рассматривается как скрипт "маршрутизации" (router). Скрипт выполняется
в самом каждого HTTP-запроса. Если этот скрипт возвращает
&false;, то запрашиваемый ресурс возвращается как есть.
В противном случае браузеру будет возвращен вывод этого скрипта.
</para>
@ -1733,7 +1729,7 @@ php >
<example>
<title>Запуск web-сервера</title>
<title>Запуск веб-сервера</title>
<programlisting role="shell">
<![CDATA[
$ cd ~/public_html
@ -1752,7 +1748,7 @@ Press Ctrl-C to quit
]]>
</screen>
<para>
После URI запросов http://localhost:8000/ и http://localhost:8000/myscript.html
После URI-запросов http://localhost:8000/ и http://localhost:8000/myscript.html
в консоли выведется примерно следующее:
</para>
<screen>
@ -1794,7 +1790,7 @@ Press Ctrl-C to quit
<example>
<title>Использование скрипта маршрутизации</title>
<para>
В этом примере, запросы изображений будут возвращать их, но запросы HTML файлов
В этом примере, запросы изображений будут отображать их, но запросы HTML-файлов
будут возвращать "Welcome to PHP".
</para>
<programlisting role="php">
@ -1816,17 +1812,17 @@ $ php -S localhost:8000 router.php
</example>
<example>
<title>Проверка использования CLI web-сервера</title>
<title>Проверка использования CLI веб-сервера</title>
<para>
Для совместного использования скрипта маршрутизации при разработке с
CLI web-сервером и в дальнейшем с боевым web-сервером:
CLI веб-сервером и в дальнейшем с рабочим (production) веб-сервером:
</para>
<programlisting role="php">
<![CDATA[
<?php
// router.php
if (php_sapi_name() == 'cli-server') {
/* Маршрутизация с заданными правилами и выход с возвращением false */
/* Маршрутизация с заданными правилами и возврат false */
}
/* продолжение с обычными операциями index.php */
?>]]>
@ -1841,8 +1837,8 @@ $ php -S localhost:8000 router.php
<example>
<title>Поддержка неподдерживаемых типов файлов</title>
<para>
Если вам нужно обслуживать статические ресурсы с MIME типами неподдерживаемыми
CLI web-сервером:
Если вам нужно обслуживать статические ресурсы с MIME-типами, неподдерживаемыми
CLI веб-сервером:
</para>
<programlisting role="php">
<![CDATA[
@ -1866,9 +1862,9 @@ $ php -S localhost:8000 router.php
</example>
<example>
<title>Доступ к CLI web-серверу с удаленных машин</title>
<title>Доступ к CLI веб-серверу с удаленных машин</title>
<para>
Вы можете сделать web-сервер доступным на 8000 порту для всех сетевых интерфейсов:
Вы можете сделать веб-сервер доступным на 8000 порту для всех сетевых интерфейсов:
</para>
<programlisting role="shell">
<![CDATA[
@ -1899,7 +1895,7 @@ $ php -S 0.0.0.0:8000
<entry><link linkend="ini.cli-server.color">cli_server.color</link></entry>
<entry>"0"</entry>
<entry>PHP_INI_ALL</entry>
<entry>Доступна начиная с версии PHP 5.4.0.</entry>
<entry>Доступно с PHP 5.4.0.</entry>
</row>
</tbody>
</tgroup>

View File

@ -10,7 +10,7 @@
<preface xml:id="intro.url">
&reftitle.intro;
<para>
Работа со строками URL: кодирование, декодирование, разбор.
Работа со строками URL: кодирование, декодирование и разбор.
</para>
</preface>

View File

@ -94,7 +94,7 @@
</term>
<listitem>
<simpara>
Вывод фрагмента(строка после символа #) из разобранного URL.
Вывод фрагмента (строка после символа #) из разобранного URL.
</simpara>
</listitem>
</varlistentry>
@ -111,7 +111,7 @@
<listitem>
<simpara>
Кодирование выполняется в соответствии с
<link xlink:href="&url.rfc;1738">RFC 1738</link> и медиа-типом
<link xlink:href="&url.rfc;1738">RFC 1738</link> и типом данных
<literal>application/x-www-form-urlencoded</literal>. Это означает,
что пробелы заменяются символом плюс(<literal>+</literal>).
</simpara>

View File

@ -41,7 +41,7 @@
Возвращает строку, в которой все не цифро-буквенные символы, кроме
<literal>-_.~</literal>, должны быть заменены знаком процента
(<literal>%</literal>), за которым следует два шестнадцатеричных числа.
Это кодировка, описанная в <link xlink:href="&url.rfc;3986">RFC 3986</link>,
Это кодирование, описанное в <link xlink:href="&url.rfc;3986">RFC 3986</link>,
служит для защиты буквенных символов от интерпретации в качестве специальных
разграничителей URL и защищает URL от искажения при передаче символов с последующей конвертацией
(как в некоторых почтовых системах).