Apache-2.4
在使用 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
不再被 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