配置:我使用带有 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
不再被 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
在第 810 行设置为 8M。不过,我调用时返回的值ini_get('upload_max_filesize')
是默认值。(是的,我已经重新启动了 Apache)。
upload_max_filesize
在其他.ini
文件或.htaccess
(我已经广泛搜索)中没有设置任何内容。
我现在已经用尽了我的调试选项,并希望有答案可以建议我如何破解它。
终于想通了!
事实证明,重新启动 Apache (httpd) 不足以使更改在
php.ini
此特定配置下生效。您还需要重新启动 FastCGI 进程管理器。以下命令解决了它: