配置:我使用带有 SELinux 内核模块和 php-fpm 的 RHEL7 运行 Web 服务器。默认情况下,RHEL7 附带 PHP 5.4。此版本的 PHP 对我的软件来说太旧了,因此我从 RHSC 升级到了 PHP 5.6.25。
升级之前,一切都按预期运行。
当我从 CLI 运行升级后的 php 时,一切都正常。例如,我将upload_max_filesize
(第 810 行) 的值从 2M (默认值) 更改为 8M,当我从 CLI 查询 PHP 设置时,此更改按预期显示:
php -v
php 5.6.25 (cli) ...
php -i | fgrep upload_max_filesize
upload_max_filesize => 8M => 8M
然而,后升级后,Apache 重新启动时似乎php.ini
不再读取它。即:更改无效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
即, Web 服务器使用的路径是/etc/opt/rh/rh-php56/php.ini
,并且它upload_max_filesize
在第 810 行设置为 8M。但是,我调用时返回的值ini_get('upload_max_filesize')
是默认值。(是的,我有重新启动 Apache)。
upload_max_filesize
其他.ini
文件或.htaccess
(我已经进行了广泛搜索)中没有任何内容设置。
我现在已经用尽了调试的所有选项,希望得到可以指导我如何解决这个问题的答案。
答案1
终于明白了!
事实证明,重新启动 Apache (httpd) 不足以使php.ini
此特定配置的更改生效。您还需要重新启动 FastCGI 进程管理器。以下命令解决了此问题:
sudo systemctl restart rh-php56-php-fpm.service