Использование PHP в командной строке
PHP Manual

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

Список опций, доступный при запуске 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               Интерактивный запуск
  -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>.

  args...          Аргументы, передаваемые скрипту. Используйте -- args в случае, если
                   первый аргумент начинается с '-' или сам скрипт читается из потока STDIN.

  --ini            Показывать имена конфигурационных файлов

  --rf <name>      Показать информацию о функции <name>.
  --rc <name>      Показать информацию о классе <name>.
  --re <name>      Показать информацию о расширении <name>.
  --rz <name>      Показать информацию о Zend-расширении <name>.
  --ri <name>      Показать конфигурацию для расширения <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"
$ 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 . Этот переключатель необязателен и может быть убран. Достаточно передавать только имя запускаемого файла.

Замечание:

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

-h и -? --help и --usage Выводит список актуальных опций вместе с несколькими однострочными описаниями.
-i --info Использование этой опции приводит к вызову функции phpinfo() и выводу результирующей информации. В случае, если PHP работает некорректно, будет весьма логично выполнить php -i и посмотреть, выводятся ли сообщения об ошибке до информационных таблиц или даже вместо них. Учтите, что в случае использования CGI-модуля весь вывод будет в формате HTML и, как следствие, очень большим.
-l --syntax-check

Предоставляет удобный способ для проверки заданного PHP-кода на наличие синтаксических ошибок. В случае успешной проверки будет напечатана следующая фраза: "No syntax errors detected in <filename>", - и код возврата будет равен 0. А в случае неудачи - текст "Errors parsing <filename>" вместе с внутренними сообщениями парсера и код возврата будет равен -1.

Проверка исходного кода при помощи данной опции не находит фатальных ошибок (например, таких как вызов неопределенных функций). Используйте опцию -f , если вы хотите проверить код на наличие фатальных ошибок.

Замечание:

Эта опция несовместима с опцией -r .

-m --modules

Пример #1 Вывод встроенных (и загружаемых) PHP и Zend модулей

$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

-r --run

Позволяет выполнять PHP-код, указанный непосредственно в командной строке. Открывающие и закрывающие PHP-теги (<?php и ?>) не нужны и, более того, приводят к синтаксической ошибке.

Замечание:

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

Пример #2 Ошибка синтаксиса при использовании двойных кавычек

$ 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

Проблема заключается в том, что sh/bash выполняет автоматическую подстановку переменных в случае, если используются двойные кавычки ("). Поскольку переменная $foo вряд ли определена, она заменяется пустой строкой, так что передаваемый PHP-код для выполнения выглядит следующим образом:

$ php -r " = get_defined_constants();"

Правильным решением в данном случае будет использование одиночных кавычек ', поскольку автоматическая подстановка переменных, заключенных в одиночные кавычки, в sh/bash не происходит.

Пример #3 Использование одинарных кавычек для предотвращения подстановки переменных в консоли

$ 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"]=>
  [...]

При использувании оболочки, отличной от sh/bash, могут возникнуть другие вопросы. В таком случае необходимо создать отчет о возникшей ошибке на сайте » http://bugs.php.net/. Можно столкнуться с проблемами при попытке получить доступ к переменным оболочки или при работе с экранирующими обратными слэшами. Теперь вы предупреждены!

Замечание:

Ключ -r доступен в CLI SAPI, но недоступен в CGI SAPI.

Замечание:

Эта опция предназначена только для самых базовых вещей. Поэтому некоторые конфигурационные директивы (например, auto_prepend_file и auto_append_file) в этом режиме будут проигнорированы.

-B --process-begin

Выполняемый PHP-код до обработки потока ввода (stdin). Добавлена в PHP 5.

-R --process-code

PHP-код, выполняемый для каждой введенной строки. Добавлена в PHP 5.

В этом режиме есть две специальные переменные: $argn и $argi. $argn содержит строку, которую PHP обрабатывает в данный момент, а $argi содержит номер этой строки.

-F --process-file

PHP-файл, выполняемый для каждой введенной строки. Добавлена в PHP 5.

-E --process-end

PHP-код, выполняемый после обработки ввода. Добавлена в PHP 5.

Пример #4 Использование опций -B , -R и -E для подсчета количества строк в проекте.

$ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Всего строк: $l\n";'
Всего строк: 37328

-S --server

Запускает встроенный веб-сервер. Доступна, начиная с версии PHP 5.4.0.

-t --docroot Указывает корень документов для встроенного веб-сервера. Доступна, начиная с версии PHP 5.4.0.
-s --syntax-highlight и --syntax-highlighting

Показать исходный код с подсвеченным разными цветами синтаксисом.

Эта опция использует внутренний механизм для парсинга файла и записи в стандартный поток вывода подсвеченную HTML-версию этого файла. Учтите, что все что она делает, это генерирует блок <code> [...] </code> HTML-тегов, без HTML-заголовков.

Замечание:

Эта опция несовместима с опцией -r .

-v --version

Пример #5 Использование -v для получения типа SAPI и версии PHP и Zend

$ 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 попытается загрузить это расширение из вашего системного пути поиска библиотек по умолчанию (обычно он указывается в /etc/ld.so.conf в Linux системах). Передача файла с абсолютным путем не будет использовать данный системный путь поиска. Относительное имя файла, содержащее директорию, укажет PHP подгрузить расширение относительно текущей директории.

  --ini

Показывает имена конфигурационных файлов и сканируемые директории. Доступна, начиная с версии PHP 5.2.3.

Пример #6 Пример --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 5.1.2.

Эта опция доступна только в случае если PHP был скомпилирован с поддержкой Reflection.

Пример #7 Базовое использование --rf

$ php --rf var_dump
Function [ <internal> public function var_dump ] {

  - Parameters [2] {
    Parameter #0 [ <required> $var ]
    Parameter #1 [ <optional> $... ]
  }
}

--rc --rclass

Показывает информацию об указанном классе (список констант, свойств и методов). Доступна, начиная с версии PHP 5.1.2.

Эта опция доступна только в случае если PHP был скомпилирован с поддержкой Reflection.

Пример #8 Пример --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 5.1.2.

Эта опция доступна только в случае если PHP был скомпилирован с поддержкой Reflection.

Пример #9 Пример --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()). Доступна, начиная с версии PHP 5.4.0.

--ri --rextinfo

Показывает информацию о конфигурации указанного расширения (та же информация, что показывается функцией phpinfo()). Доступна, начиная с версии PHP 5.2.2. Конфигурацию ядра можно узнать, указав в качестве имени расширения значение "main".

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


Использование PHP в командной строке
PHP Manual