## Список опций командной строки

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

    Usage: php [options] [-f] <file> [--] [args...]
       php [options] -r <code> [--] [args...]
       php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
       php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
       php [options] -- [args...]
       php [options] -a

      -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.

      args...          Arguments passed to script. Use -- args when first argument
                       starts with - or script is read from stdin

      --ini            Show configuration file names

      --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>.

Опции, которые доступны из командной строки
Опция | Полное название | Описание
--- | --- | ---
-a | --interactive | Запустить PHP в интерактивном режиме. Дополнительную информацию даёт раздел «Интерактивная консоль».
-b | --bindpath | Путь связывания библиотек (Bind Path) для внешнего режима FASTCGI Server (параметр работает только в CGI-версии).
-C | --no-chdir | Не менять текущую директорию на директорию скрипта (параметр работает только в CGI-версии).
-q | --no-header | Тихий режим. Подавляет вывод заголовков HTTP (параметр работает только в CGI-версии).
-T | --timing | Измерить время выполнения скрипта, повторенного count раз (параметр работает только в CGI-версии).
-c | --php-ini | Указывает, либо директорию, в которой требуется искать конфигурационный файл php.ini, либо пользовательский `INI`-файл (название которого может отличаться от стандартного php.ini), например:
    $ php -c /custom/directory/ my_script.php

    $ php -c /custom/directory/custom-file.ini my_script.php
Если эта опция не указана, поиск php.ini будет осуществлён в местах по умолчанию.
-n | --no-php-ini | Полностью игнорировать php.ini.
-d | --define | Устанавливает пользовательское значение для каждой из конфигурационных опций, доступных в php.ini. Синтаксис выглядит следующим образом:
     -d configuration_directive[=value]
Пример #1 Пример команды с параметром `-d` для установки INI-настройки
    # Если значение опустили, соответствующей опции присвоится значение "1"
    $ php -d max_execution_time
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(1) "1"

    # Указание пустого значения установит соответствующую опцию значением ""
    php -d max_execution_time=
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(0) ""

    # Конфигурационная переменная будет установлена любым значением, указанным после символа '='
    $  php -d max_execution_time=20
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(2) "20"
    $  php
            -d max_execution_time=doesntmakesense
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(15) "doesntmakesense"
-e | --profile-info | Включить режим расширенной информации для отладчика или профайлера.
-f | --file | Разбирает и исполняет файл, который указали в параметре -f. Параметр необязателен — достаточно указать только название файла для запуска.
-h и -? | --help и --usage | Выводит список опций командной строки с однострочным описанием того, что они делают.
-i | --info | Вызывает функцию phpinfo() и выводит результат работы функции. При некорректной работе PHP рекомендуют выполнить команду php -i и посмотреть, выводятся ли сообщения об ошибках до или вместо информационных таблиц. При работе CGI-модуля учитывают, что команда выведет данные в HTML-формате и поэтому вывод будет большим.
-l | --syntax-check | Проверяет синтаксис, но не выполняет PHP-код. Обработаются входные данные стандартного входного потока, если название файла не указали, иначе проверится каждое название файла. При выполнении без ошибок в стандартный поток вывода записывается текст `No syntax errors detected in <filename>`. Вместе с внутренней информацией об ошибке парсера в станадртный поток вывода записывается текст `Errors parsing <filename>`, если возникла ошибка. Опция присвоит коду возврата командной оболочки значение `-1`, если в заданных файлах или данных стандартного потока ввода возникли ошибки, иначе опция присвоит коду возврата командной оболочки значение `0`. Опция не обнаружит фатальные ошибки в коде, который требует выполнения, наподобие вызова функций, которые не объявили. Замечание: До PHP 8.3.0 для проверки разрешалось указывать только одно название файла. Замечание: Опция не работает с опцией -r.
-m | --modules | Пример #2 Вывод списка PHP- и Zend-модулей ядра, которые загрузили
    $ php -m
    [PHP Modules]
    xml
    tokenizer
    standard
    session
    posix
    pcre
    overload
    mysql
    mbstring
    ctype

    [Zend Modules]
> -r | --run | Разрешает выполнять PHP-код, который указали в командной строке. Открывающие и закрывающие PHP-теги (`<?php` и `?>`) не нужны и вызовут синтаксическую ошибку. Замечание: С этим ключом работают очень осторожно и избегают недоразумений, которые связаны с автоматической подстановкой переменных окружения. Пример #3 Ошибка синтаксиса при двойных кавычках
>     $ php -r "$foo = get_defined_constants();"
>     PHP Parse error:  syntax error, unexpected '=' in Command line code on line 1

>     Parse error: syntax error, unexpected '=' in Command line code on line 1
> Проблема здесь заключается в том, что командная оболочка bash выполняет автоматическую подстановку переменных в sh-командах, если указали двойные кавычки `"`. Поскольку маловероятно, что переменную $foo определили, переменная заменяется пустой строкой, что изменяет PHP-код, который передали для выполнения, вот так:
>     $ php -r " = get_defined_constants();"
> Правильное решение в таких ситуациях состоит в указании одинарных кавычек `'`, поскольку автоматическая подстановка переменных, которые обернули в одинарные кавычки, в sh-командах оболочки bash не происходит. Пример #4 Одинарные кавычки, которые предотвращают подстановку переменных в консоли
>     $ php -r '$foo = get_defined_constants(); var_dump($foo);'
>     array(370) {
>       ["E_ERROR"]=>
>       int(1)
>       ["E_WARNING"]=>
>       int(2)
>       ["E_PARSE"]=>
>       int(4)
>       ["E_NOTICE"]=>
>       int(8)
>       ["E_CORE_ERROR"]=>
>       [...]
В оболочках, которые отличаются от оболочки bash и которые запускают sh-команды, иногда возникают другие проблемы. Тогда требуется создать отчёт о ошибке, которая возникла, на сайте » https://github.com/php/php-src/issues. С проблемами иногда сталкиваются при попытке получить доступ к переменным оболочки или при работе с экранирующими обратными слешами. Теперь вы предупреждены! Замечание: Ключ -r доступен в CLI SAPI, но недоступен в CGI SAPI. Замечание: Опция предназначена только для самого простого кода. Поэтому некоторые конфигурационные директивы наподобие auto_prepend_file и auto_append_file в этом режиме проигнорируются.
-B | --process-begin | PHP-код, который требуется выполнить перед обработкой стандартного потока ввода stdin.
-R | --process-code | PHP-код, который требуется выполнить для каждой строки ввода. В этом режиме предусмотрели две специальные переменные: $argn и $argi. Переменная $argn содержит строку, которую PHP обрабатывает в текущий момент, а переменная $argi содержит номер этой строки.
-F | --process-file | PHP-файл, который требуется выполнить для каждой строки ввода.
-E | --process-end | PHP-код, который требуется выполнить после обработки ввода. Пример #5 Подсчёт количества строк в проекте опциями -B, -R и -E
    $ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Всего строк: $l\n";'
    Всего строк: 37328
-S | --server | Запускает встроенный веб-сервер.
-t | --docroot | Указывает корень документа для встроенного веб-сервера.
-s | --syntax-highlight и --syntax-highlighting | Показывает исходный код с подсветкой синтаксиса. Эта опция использует внутренний механизм для разбора файла и записи в стандартный поток вывода подсвеченной версии этого файла. Учтите, что опция только генерирует блок `<code> [...] </code>` HTML-тегов, без HTML-заголовков. Замечание: Опция несовместима с опцией -r.
-v | --version | Пример #6 Получение информации о названия SAPI, PHP- и Zend-версии через опцию -v
    $ php -v
    PHP 5.3.1 (cli) (built: Dec 11 2009 19:55:07)
    Copyright (c) 1997-2009 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
-w | --strip | Показывает исходный код без комментариев и пробелов. Замечание: Опция несовместима с опцией -r.
| --ini | Показывает имена файлов конфигурации и просканированные каталоги. Дополнительно можно передать `--ini=diff`, чтобы показать различия между загруженными файлами конфигурации и конфигурацией по умолчанию. Пример #7 Пример `--ini`
    $ php --ini
    Configuration File (php.ini) Path: /usr/dev/php/5.2/lib
    Loaded Configuration File:         /usr/dev/php/5.2/lib/php.ini
    Scan for additional .ini files in: (none)
    Additional .ini files parsed:      (none)
Замечание: Опция `--ini=diff` недоступна до PHP 8.5.0.
--rf | --rfunction | Показывает информацию о функции или методе класса (например, количество и названия параметров). Опция доступна, только если PHP скомпилировали с поддержкой интерфейса Reflection. Пример #8 Пример базового поведения опции `--rf`
    $ php --rf var_dump
    Function [ <internal> public function var_dump ] {

      - Parameters [2] {
        Parameter #0 [ <required> $var ]
        Parameter #1 [ <optional> $... ]
      }
    }
--rc | --rclass | Показывает информацию об классе; выводит список констант, свойств и методов. Опция доступна, только если PHP скомпилировали с поддержкой интерфейса Reflection. Пример #9 Пример вывода опции `--rc`
    $ php --rc Directory
    Class [ <internal:standard> class Directory ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [3] {
        Method [ <internal> public method close ] {
        }

        Method [ <internal> public method rewind ] {
        }

        Method [ <internal> public method read ] {
        }
      }
    }
--re | --rextension | Показывает информацию о модуле; выводит список опций файла php.ini, функций, которые объявили, констант и классов. Опция доступна, только если PHP скомпилировали с поддержкой интерфейса Reflection. Пример #10 Пример вывода опции `--re`
    $ php --re json
    Extension [ <persistent> extension #19 json version 1.2.1 ] {

      - Functions {
        Function [ <internal> function json_encode ] {
        }
        Function [ <internal> function json_decode ] {
        }
      }
    }
--rz | --rzendextension | Показывает информацию о конфигурации Zend-модуля — та же информация, которая возвращается функцией phpinfo().
--ri | --rextinfo | Показывает информацию о конфигурации указанного модуля (та же информация, которая возвращается phpinfo()). Конфигурацию ядра можно узнать, указав в качестве имени модуля значение "main". Пример #11 Пример `--ri`
    $ php --ri date

    date

    date/time support => enabled
    "Olson" Timezone Database Version => 2009.20
    Timezone Database => internal
    Default timezone => Europe/Oslo

    Directive => Local Value => Master Value
    date.timezone => Europe/Oslo => Europe/Oslo
    date.default_latitude => 59.930972 => 59.930972
    date.default_longitude => 10.776699 => 10.776699
    date.sunset_zenith => 90.583333 => 90.583333
    date.sunrise_zenith => 90.583333 => 90.583333

> Замечание:

> Опции `-rBRFEH`, `--ini` и `--r[fcezi]` доступны только в CLI.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open