Конфигурация: я запускаю веб-сервер с RHEL7 с модулем ядра SELinux и php-fpm. По умолчанию RHEL7 поставляется с PHP 5.4. Эта версия PHP слишком старая для моего программного обеспечения, поэтому я обновился до PHP 5.6.25 с RHSC.
До обновления все работало как положено.
Когда я запускаю обновленный php из интерфейса командной строки, все работает нормально. Например, я изменил значение для 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 Process Manager. Следующая команда разрешила это:
sudo systemctl restart rh-php56-php-fpm.service