Как узнать какой php ini используется
Перейти к содержимому

Как узнать какой php ini используется

  • автор:

Как определить какой именно файл php.ini используется в CLI

Я использую PHP через интерфейс командной строки (CLI). Как определить, где находится файл php.ini который используется PHP в этом режиме?

Отслеживать
задан 3 апр 2016 в 17:45
Dmitriy Simushev Dmitriy Simushev
17.9k 5 5 золотых знаков 48 48 серебряных знаков 85 85 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Начиная с версии 5.2.3 команда php поддерживает волшебную опцию —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) 

Эта и другие опции команды php , описаны в официальной документации.

ini_get

В случае успешного выполнения возвращает значение настройки конфигурации.

Список параметров

Имя настройки конфигурации.

Возвращаемые значения

Возвращает значение настройки конфигурации в виде строки. Для значений null будет возвращаться пустая строка. Функция вернёт false , если указанная настройка не существует.

Примеры

Пример #1 Несколько примеров использования ini_get()

/*
Наш файл php.ini содержит следующие настройки:

display_errors = On
register_globals = Off
post_max_size = 8M
*/

echo ‘display_errors = ‘ . ini_get ( ‘display_errors’ ) . «\n» ;
echo ‘register_globals = ‘ . ini_get ( ‘register_globals’ ) . «\n» ;
echo ‘post_max_size = ‘ . ini_get ( ‘post_max_size’ ) . «\n» ;
echo ‘post_max_size+1 = ‘ . ( ini_get ( ‘post_max_size’ )+ 1 ) . «\n» ;
echo ‘post_max_size in bytes = ‘ . return_bytes ( ini_get ( ‘post_max_size’ ));

function return_bytes ( $val ) $val = trim ( $val );
$last = strtolower ( $val [ strlen ( $val )- 1 ]);
switch( $last ) // Модификатор ‘G’ доступен
case ‘g’ :
$val *= 1024 ;
case ‘m’ :
$val *= 1024 ;
case ‘k’ :
$val *= 1024 ;
>

Результатом выполнения данного примера будет что-то подобное:

display_errors = 1 register_globals = 0 post_max_size = 8M post_max_size+1 = 9 post_max_size in bytes = 8388608

Примечания

Замечание: Возвращаемые логические значения

Boolean-значение ini-настройки off будет возвращено в виде пустой строки или строки «0», в то время как значению on будет соответствовать строка «1». Функция также может возвращать буквенные значения INI-настройки.

Замечание: Возвращаемые значения количества памяти

Многие ini-настройки, значения которых измеряются количеством памяти, такие как upload_max_filesize, сохраняются в php.ini в сокращённом виде. ini_get() вернёт именно то, что записано в файле php.ini , а НЕ целочисленный ( int ) эквивалент этой величины. Попытка использования полученной величины в арифметических операциях не даст желаемого результата. В приведённом выше примере продемонстрировано, как можно перевести сокращённую запись в число байт.

Замечание:

ini_get() не может прочесть опции типа «массив», такие как pdo.dsn.*, и возвращает false таких случаях.

Смотрите также

  • get_cfg_var() — Извлекает значение настройки конфигурации PHP
  • ini_get_all() — Получает все настройки конфигурации
  • ini_restore() — Восстанавливает значение настройки конфигурации
  • ini_set() — Устанавливает значение настройки конфигурации

User Contributed Notes 12 notes

13 years ago

another version of return_bytes which returns faster and does not use multiple multiplications (sorry:). even if it is resolved at compile time it is not a good practice;
no local variables are allocated;
the trim() is omitted (php already trimmed values when reading php.ini file);
strtolower() is replaced by second case which wins us one more function call for the price of doubling the number of cases to process (may slower the worst-case scenario when ariving to default: takes six comparisons instead of three comparisons and a function call);
cases are ordered by most frequent goes first (uppercase M-values being the default sizes);
specs say we must handle integer sizes so float values are converted to integers and 0.8G becomes 0;
‘Gb’, ‘Mb’, ‘Kb’ shorthand byte options are not implemented since are not in specs, see
http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes

function return_bytes ( $size_str )
switch ( substr ( $size_str , — 1 ))
case ‘M’ : case ‘m’ : return (int) $size_str * 1048576 ;
case ‘K’ : case ‘k’ : return (int) $size_str * 1024 ;
case ‘G’ : case ‘g’ : return (int) $size_str * 1073741824 ;
default: return $size_str ;
>
>
?>

6 years ago

Be aware that max_execution_time can be altered by XDebug.

While debugging a script locally that made use of it returned 0 when XDebug remote debugging was enabled and the IDE was listening to it.

It makes sense, since debugging manually takes time so we don’t want the script to time out ; but in that particular case, it made it look to the script like max_execution_time was 0, so calculations were wrong.

You can see in phpinfo() that local value is 0 in that case, but master value is the correct one you set in your php.ini.

2 years ago

Here is another way to get the result in bytes using PHP8

/**
* @param string $size
* @return int
* @author DevsrealmGuy
*/
public function getBytes ( string $size ): int
$size = trim ( $size );

#
# Separate the value from the metric(i.e MB, GB, KB)
#
preg_match ( ‘/([0-9]+)[\s]*([a-zA-Z]+)/’ , $size , $matches );

$value = (isset( $matches [ 1 ])) ? $matches [ 1 ] : 0 ;
$metric = (isset( $matches [ 2 ])) ? strtolower ( $matches [ 2 ]) : ‘b’ ;

#
# Result of $value multiplied by the matched case
# Note: (1024 ** 2) is same as (1024 * 1024) or pow(1024, 2)
#
$value *= match ( $metric ) ‘k’ , ‘kb’ => 1024 ,
‘m’ , ‘mb’ => ( 1024 ** 2 ),
‘g’ , ‘gb’ => ( 1024 ** 3 ),
‘t’ , ‘tb’ => ( 1024 ** 4 ),
default => 0
>;

return (int) $value ;
>

#
# TEST: This default to 0 if it doesn’t conform with the match standard
#
echo getBytes ( ‘2GB’ ) . «
» ;
# OUTPUT: 2147483648
echo getBytes ( ‘4tb’ ) . «
» ;
# OUTPUT: 4398046511104
echo getBytes ( ‘5345etrgrfd’ ) . «
» ;
# OUTPUT: 0
echo getBytes ( ‘357568336586’ ) . «
» ;
# OUTPUT: 0
?>

17 years ago

Concerning the value retourned, it depends on how you set it.
I had the problem with horde-3 which test the safe_mode value.
THan :
— if you set the value with php_admin_value safe_mode Off (or On) ini_get returns the string
— if you set the value with php_admin_flag safe_mode Off (or On) ini_get returns the boolean.

12 years ago

This version of return_bytes takes care of the MB, GB, KB cases along with the M,G,K ones.
Hope this is helpful!

public static function return_bytes ( $val )
if(empty( $val ))return 0 ;

preg_match ( ‘#([0-9]+)[\s]*([a-z]+)#i’ , $val , $matches );

$last = » ;
if(isset( $matches [ 2 ])) $last = $matches [ 2 ];
>

if(isset( $matches [ 1 ])) $val = (int) $matches [ 1 ];
>

switch ( strtolower ( $last ))
case ‘g’ :
case ‘gb’ :
$val *= 1024 ;
case ‘m’ :
case ‘mb’ :
$val *= 1024 ;
case ‘k’ :
case ‘kb’ :
$val *= 1024 ;
>

8 years ago

Yet another implementation of return_bytes:

function return_bytes ( $val )
assert ( ‘1 === preg_match(«/^\d+([kmg])?$/i», $val)’ );
static $map = array ( ‘k’ => 1024 , ‘m’ => 1048576 , ‘g’ => 1073741824 );
return (int) $val * @( $map [ strtolower ( substr ( $val , — 1 ))] ?: 1 );
>
?>

If you’re using PHP >= 7, you might replace ?: with ?? to avoid the use of the @ silencer.

15 years ago

The above example function called return_bytes() assumes that ini_get(‘upload_max_filesize’) delivers only one letter at the end. As I’ve seen ‘Mb’ and things like that, I’d suggest to change the $last = . part into $last = strtolower(substr($val,strlen($val/1),1)).
I’d call it $unit then.

18 years ago

You can set custom entries in the ini file to provide globals such as database details.
However these must be retrieved with get_cfg_var, ini_get won’t work.

14 years ago

Here is how to accurately test for boolean php.ini values:

function ini_get_bool ( $a )
$b = ini_get ( $a );

switch ( strtolower ( $b ))
case ‘on’ :
case ‘yes’ :
case ‘true’ :
return ‘assert.active’ !== $a ;

case ‘stdout’ :
case ‘stderr’ :
return ‘display_errors’ === $a ;

1 year ago

Here is a version combining a few of the examples here that does *not* require php8 nor does it generate a warning

/**
* gets the value in bytes converted from a human readable string like 10G’
*
* @param mixed $val the human readable/shorthand version of the value
* @return int the value converted to bytes
*/
function return_bytes($val) $val = trim($val);
preg_match(‘/([0-9]+)[\s]*([a-zA-Z]+)/’, $val, $matches);
$value = (isset($matches[1])) ? intval($matches[1]) : 0;
$metric = (isset($matches[2])) ? strtolower($matches[2]) : ‘b’;
switch ($metric) case ‘tb’:
case ‘t’:
$value *= 1024;
case ‘gb’:
case ‘g’:
$value *= 1024;
case ‘mb’:
case ‘m’:
$value *= 1024;
case ‘kb’:
case ‘k’:
$value *= 1024;
>
return $value;
>

19 years ago

It might be useful for included scripts that include other files to extend the ‘include_path’ variable:

Sometimes, it may also be useful to store the current ‘include_path’ in a variable, overwrite it, include, and then restore the old ‘include_path’.

8 years ago

In a similar vein, converting flags to booleans proper:

function return_boolean ( $val )
static $map = array ( ‘on’ => true , ‘true’ => true , ‘off’ => false , ‘false’ => false );
return @( $map [ strtolower ( $val )] ?: (bool) $val );
>
?>

If you’re using PHP >= 7, consider replacing ?: with ?? and removing the @ silencer.

  • Опции PHP/информационные функции
    • assert
    • cli_​get_​process_​title
    • cli_​set_​process_​title
    • dl
    • extension_​loaded
    • gc_​collect_​cycles
    • gc_​disable
    • gc_​enable
    • gc_​enabled
    • gc_​mem_​caches
    • gc_​status
    • get_​cfg_​var
    • get_​current_​user
    • get_​defined_​constants
    • get_​extension_​funcs
    • get_​include_​path
    • get_​included_​files
    • get_​loaded_​extensions
    • get_​required_​files
    • get_​resources
    • getenv
    • getlastmod
    • getmygid
    • getmyinode
    • getmypid
    • getmyuid
    • getopt
    • getrusage
    • ini_​alter
    • ini_​get_​all
    • ini_​get
    • ini_​parse_​quantity
    • ini_​restore
    • ini_​set
    • memory_​get_​peak_​usage
    • memory_​get_​usage
    • memory_​reset_​peak_​usage
    • php_​ini_​loaded_​file
    • php_​ini_​scanned_​files
    • php_​sapi_​name
    • php_​uname
    • phpcredits
    • phpinfo
    • phpversion
    • putenv
    • set_​include_​path
    • set_​time_​limit
    • sys_​get_​temp_​dir
    • version_​compare
    • zend_​thread_​id
    • zend_​version
    • assert_​options
    • get_​magic_​quotes_​gpc
    • get_​magic_​quotes_​runtime
    • restore_​include_​path
    • Copyright © 2001-2023 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

    Где находится php.ini

    Судя из названия, иногда сложно определить, какой из php.ini используется, и загружен для выполнения, особенно если версий PHP установлено несколько.

    Для решения этого вопроса, можно пойти двумя путями:
    1. Создать в каталоге публикации Web сайта файл с расширением html, и добавить туда строки

    Соответственно загрузив эту страницу в браузере, мы увидим исчерпывающую информацию по используемому PHP
    2. Воспользоваться командой в терминале, которая покажет какой файл php.ini используется, и где находится

    php -i | grep php.ini

    Похожие записи:

    1. Как переключить версию php в Debian
    2. Установка PHP 8.1 на Debian
    3. Настройка ssh

    Настройка параметров PHP

    Интерфейс Plesk позволяет вам и вашим клиентам настраивать параметры PHP для отдельных тарифных планов, дополнительных планов, подписок, сайтов и субдоменов. Значения некоторых наиболее часто используемых параметров PHP можно изменять путем выбора нужного значения из списка или указания своего значения. Путем редактирования файла panel.ini вы можете внести следующие изменения в этот сценарий:

    • Указать, какие предопределенные значения может принимать параметр PHP.
    • Изменить значение по умолчанию для параметра PHP.
    • Запретить указание произвольных значений для некоторых параметров PHP.

    Как задать предопределенные значения, которые может принимать параметр PHP

    Для большинства параметров PHP можно выбрать единственное значение из списка предопределенных значений. Вы можете создать произвольный список предопределенных значений, которые может принимать параметр PHP, добавив в файл panel.ini одну или несколько строк по следующему образцу:

    [php] settings…values[]=

    • – группа, которой принадлежит выбранный параметр PHP. Чтобы узнать больше о группах параметров PHP, смотрите раздел “Параметры и группы параметров PHP” ниже.
    • – имя выбранного параметра PHP. Используйте такой же синтаксис, как в php.ini.
    • – предопределенное значение параметра, которые вы хотите добавить в список. Используйте такой же синтаксис, как в php.ini.

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

    Например, по умолчанию параметр memory_limit может принимать одно из следующих значений: 8M , 16M , 32M , 64M и 128M . Если вы хотите, чтобы выбирать можно было только из значений 64M и 128M , добавьте в файл panel.ini следующие строки:

    [php] settings.performance.memory_limit.values[]="64M" settings.performance.memory_limit.values[]="128M" 

    image 79193

    Как изменить значение по умолчанию для параметра PHP

    Для большинства параметров PHP одно значение из списка предопределенных значений отмечено как значение по умолчанию. Значение по умолчанию используется в случае, если пользователь не указал вручную никакого другого значения. Вы можете изменить значение по умолчанию для параметра PHP, добавив в файл panel.ini строку по следующему образцу:

    [php] settings…default=

    • – группа, которой принадлежит выбранный параметр PHP. Чтобы узнать больше о группах параметров PHP, смотрите раздел “Параметры и группы параметров PHP” ниже.
    • – имя выбранного параметра PHP. Используйте такой же синтаксис, как в php.ini.
    • – значение по умолчанию для выбранного параметра. Используйте такой же синтаксис, как в php.ini.

    Например, параметр open_basedir имеет значение по умолчанию . Чтобы изменить его на none , добавьте следующую строку в файл panel.ini :

    [php] settings.general.open_basedir.default="none" 

    image 79195

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

    Например, чтобы изменить значение по умолчанию для параметра execution_time на 180 , добавьте в файл panel.ini следующие строки:

    [php] settings.performance.max_execution_time[]=30 settings.performance.max_execution_time[]=60 settings.performance.max_execution_time[]=90 settings.performance.max_execution_time[]=120 settings.performance.max_execution_time[]=180 ; adds 180 to the list of predefined values settings.performance.max_execution_time.default=180 

    Как запретить использование персональных значений для параметра PHP

    Для некоторых параметров PHP есть возможность указать персональное значение вместо выбора из списка предопределенных значений. Вы можете запретить использование персональных значений для параметра PHP, добавив в файл panel.ini строку по следующему образцу:

    [php] settings...custom=false 
    • – группа, которой принадлежит выбранный параметр PHP. Чтобы узнать больше о группах параметров PHP, смотрите раздел “Параметры и группы параметров PHP” ниже.
    • – имя выбранного параметра PHP. Используйте такой же синтаксис, как в php.ini.

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

    Например, чтобы запретить использование персональных значений для параметра error_reporting , добавьте в файл panel.ini следующие строки:

    [php] settings.general.error_reporting.custom=false 

    Настройка параметров PHP-FPM

    Чтобы настроить параметры PHP, принадлежащие группе fpm, необходимо добавить в файл panel.ini следующие строки:

    [php] settings.fpm.pm.start_servers.custom=true settings.fpm.pm.min_spare_servers.custom=true settings.fpm.pm.max_spare_servers.custom=true 

    Это верно для любого изменения параметров PHP-FPM: задания значений по умолчанию, которые может принимать тот или иной параметр PHP-FPM, изменения значения по умолчанию или запрета указания персональных значений. Полный список параметров PHP-FPM показан в таблице ниже, в группе параметров “fpm (только в Linux)”.

    Например, чтобы изменить значение по умолчанию для параметра pm.max_children на 20 , добавьте в файл panel.ini следующие строки:

    [php] settings.fpm.pm.start_servers.custom=true settings.fpm.pm.min_spare_servers.custom=true settings.fpm.pm.max_spare_servers.custom=true settings.fpm.pm.max_children[]=20 settings.fpm.pm.max_children.default=20 

    Параметры и группы параметров PHP

    Вот список групп параметров PHP и входящих в них параметров:

    Группа параметров PHP Имя параметра PHP
    performance memory_limit
    max_execution_time
    max_input_time
    post_max_size
    upload_max_filesize
    opcache.enable
    wincache.ocenabled
    apc.enabled
    xcache.cacher
    disable_functions
    general safe_mode
    safe_mode_include_dir
    safe_mode_exec_dir
    include_path
    session.save_path
    mail.force_extra_parameters
    register_globals
    open_basedir
    error_reporting
    display_errors
    log_errors
    allow_url_fopen
    file_uploads
    short_open_tag
    magic_quotes_gpc
    fpm (только в Linux) pm.max_children
    pm.max_requests
    pm
    pm.start_servers
    pm.min_spare_servers
    pm.max_spare_servers
    fastCgi (только в Windows) maxInstances
    activityTimeout
    requestTimeout
    instanceMaxRequests
    queueLength
    rapidFailsPerMinute

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *