PHP Conference Nagoya 2025

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

Список опций командной строки, предоставляемых 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.
  -z <file>        Load Zend extension <file>.

  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.

-z --zend-extension

Загружает модуль Zend. PHP попытается загрузить модуль из текущего пути библиотеки по умолчанию в системе, который в Linux-системах обычно указывают в файле /etc/ld.so.conf, если передали только название файла. Передача файла с абсолютным путём не будет использовать системный путь поиска библиотеки. Относительное имя файла, которое содержит директорию, заставит PHP загрузить модуль относительно текущей директории.

  --ini

Показывает имена файлов конфигурации и просканированные каталоги.

Пример #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)

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

Добавить

Примечания пользователей 2 notes

up
1
dch
1 year ago
If you would like to see the PHP's current configuration using the -i switch from the shell command line with php.ini specified, then the order of arguments is important. Putting -i after -c gives the intended result.

Info is printed out for the default php.ini (cli)
$ php -i --php-ini /etc/php/7.4/fpm/php.ini | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/cli/php.ini

Info is printed out for the desired php.ini (fpm)
$ php --php-ini /etc/php/7.4/fpm/php.ini -i | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/fpm/php.ini
up
-2
Ap.Muthu
10 years ago
If we start the php's built in webserver (PHP v5.4 onwards) with:
php -S localhost:8000 -t htdocs
and have an image file picture.jpg in it
and reference it in a html page with:
<img src="picture.jpg">
the rendered page will not show the image and the html code behind the image is:
http://localhost:8000/index.php/picture.jpg

If however, the html code in the page is:
<img src="/picture.jpg">
the picture displays correctly.

Hence relative addressing is broken in PHP 5.4.33 Win32 VC9 build.
To Top