Apache-2.4

在使用 SELinux 的 RHEL7 上從 RHSC 升級到 PHP 5.6.25 後,無法讀取 php.ini。如何調試?

  • January 19, 2019

配置:我使用帶有 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 程序管理器。以下命令解決了它:

sudo systemctl restart rh-php56-php-fpm.service

引用自:https://serverfault.com/questions/837908