Оглавление

30.5. Изменение значения директив во время выполнения сценария

С помощью функции ini_set() можно изменить значение какой-либо директивы  из  файла php.ini  на  время  выполнения  сценария. Функция  имеет  следующий формат:
ini_set(<Директива>, <Новое значение>);


С помощью функции ini_get() можно посмотреть текущее значение какой-либо директивы. Функция имеет следующий формат:
ini_get(<Директива>);
Например:

echo ini_get("default_charset"); // Выведет windows-1251


Функция ini_get_all() возвращает массив значений всех директив:

echo "<pre>";
print_r(ini_get_all());
echo "</pre>";


Фрагмент HTML-кода,  выведенного  этим  кодом PHP,  будет  отображен  в Web-браузере так:

    [date.timezone] => Array
        (

            [global_value] => Europe/Moscow
            [local_value] => Europe/Moscow
            [access] => 7
        )
 
    [default_charset] => Array
        (
            [global_value] => windows-1251
            [local_value] => windows-1251
            [access] => 7
        )

 

Установить  значение  директивы  с  помощью  функции  ini_set()  можно  не всегда.  Опция  access,  возвращаемая  функцией  ini_get_all(),  позволяет определить, можно ли изменить значение директивы. Она может принимать следующие значения:
□ 4 — директива может быть изменена в php.ini или httpd.conf;
□ 6 — директива может быть изменена в php.ini, .htaccess или httpd.conf;
□ 7 — директива может быть изменена где угодно.


Посмотреть текущее  значение какой-либо директивы и откуда ее можно изменить позволяет следующий скрипт:

<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="name_ini">
<input type="submit" value="Определить">
</form>
<?php
if (isset($_GET['name_ini'])) {
   $ini = $_GET['name_ini'];
   $arr = ini_get_all();
   if (!isset($arr[$ini])) {
      echo 'Директива не найдена';
      exit();
   }
   echo 'Директива <b>' . $ini . '</b>';
   echo '<br>Глобальное значение: ';
   echo htmlspecialchars($arr[$ini]['global_value']);
   echo '<br>Локальное значение: ';
   echo htmlspecialchars($arr[$ini]['local_value']);
   echo '<br>Изменить можно ';
   switch ($arr[$ini]['access']) {
      case 4: echo 'в php.ini или httpd.conf'; break;
      case 6: echo 'в php.ini, .htaccess или httpd.conf';
              break;
      case 7: echo 'где угодно'; break;
   }
}
?>

Для изменения директив PHP из файла .htaccess или httpd.conf используются две  директивы —  php_value  и  php_flag.  Директива  php_flag  служит  для установки  логических  значений  директив,  а  php_value —  для  строковых  и числовых значений:
php_value <Директива> <Значение>
php_flag <Директива> On | Off
Например:

php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off

 

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити