Конфигурация: Я запускаю веб-сервер с RHEL7 с модулем ядра SELinux и php-fpm. По умолчанию RHEL7 поставляется с PHP 5.4. Эта версия PHP слишком старая для моего программного обеспечения, поэтому я обновился до PHP 5.6.25 из RHSC.
Перед обновлением все работало, как ожидалось.
Когда я запускаю обновленный php из CLI, все работает отлично. Например, я Мы изменили значение для upload_max_filesize
(в строке 810) с 2M (по умолчанию) на 8M, и это изменение появляется, как и ожидалось, когда я запрашиваю настройки PHP из CLI:
php -v
php 5.6.25 (cli) ...
php -i | fgrep upload_max_filesize
upload_max_filesize => 8M => 8M
Однако после обновления похоже, что php.ini
больше не читается Apache при перезапуске Apache. Т.е. изменения в php.ini
не имеют никакого эффекта ( все значения, включая значение для upload_max_filesize
, остаются по умолчанию).
Я создал веб-страницу для отладки этого, она содержит следующий фрагмент кода PHP:
$inipath = php_ini_loaded_file();
echo '<p>Loaded php.ini: <code>' . $inipath . '</code>.</p>';
$contents = file($inipath);
if ($contents) {
echo '<p>Line 810: ' . $contents[810] . '.</p>';
} else {
echo '<p>Unable to read php.ini file.</p>';
}
echo '<p>ini_get(): upload_max_filesize = ' . ini_get('upload_max_filesize') . '.</p>';
Он выводит:
Loaded php.ini: /etc/opt/rh/rh-php56/php.ini.
Line 810: upload_max_filesize = 8M.
ini_get(): upload_max_filesize = 2M.
То есть путь к php.ini
, используемый веб-сервер - /etc/opt/rh/rh-php56/php.ini
, и он устанавливает upload_max_filesize
на 8M в строке 810. Тем не менее, значение, возвращаемое при вызове ini_get ('upload_max_filesize')
, является значением по умолчанию. (Да, я перезапустил Apache .)
Нет ничего, что могло бы установить upload_max_filesize
в других файлах .ini
или в .htaccess
] (Я много искал.)
Я исчерпал все возможности отладки и надеюсь на ответы, которые подскажут, как я могу это взломать.
Наконец-то разобрались!
Оказывается, перезапуска Apache (httpd) недостаточно для того, чтобы изменения в php.ini
вступили в силу именно с этой конфигурацией. Также необходимо перезапустить менеджер процессов FastCGI. Следующая команда решила эту проблему:
sudo systemctl restart rh-php56-php-fpm.service