在带有 SELinux 的 RHEL7 上从 RHSC 升级到 PHP 5.6.25 后,无法读取 php.ini。如何调试?

在带有 SELinux 的 RHEL7 上从 RHSC 升级到 PHP 5.6.25 后,无法读取 php.ini。如何调试?

配置:我使用带有 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

相关内容