PHP-FPM 設定 php_admin_value


在伺服器進行 PHP 設定, 最直接的方法是編輯 php.ini 檔案, 如果是使用 mod_php 的情況下, 可以用 php_admin_value 或 php_admin_flag, 在 Apache 對個別目錄或 VirtualHost 設定不同的 PHP 參數, 或者使用 .htaccess 設定更可以不用重新載入 httpd 修改 PHP 設定。

但如果是使用 PHP-FPM 的話, 那便不可以使用 php_admin_value 及 php_admin_flag 設定, 使用了的話會無法啟動 httpd; 如果在 .htaccess 設定, 便會出現 “500 Internal Server Error”.

在 PHP-FPM 要設定個別目錄或 VirtualHost 的 PHP 設定, 可以用以下方法:

.user.ini

使用 .user.ini 是最簡單的方法, 只要在需要設定的目錄, 或者 VirtualHost 的根目錄建立 .user.ini 檔案, 即與 .htaccess 的位置相錄, 便可以設定目錄的 PHP 設定, 設定的語法跟 php.ini 的方法一樣, 例如想在個別目錄開啟 allow_url_fopen, 只要加入以下內容:

allow_url_fopen = Off

PHP-FPM 設定檔

另一個方法是在 VirtualHost 所屬的 PHP-FPM 設定檔, 加入以下一行:

php_admin_flag[allow_url_fopen] = on

修改後需要重新啟動 PHP-FPM:

# systemctl restart php-fpm

httpd.conf 及 .htaccess

如果要在 httpd.conf 或 .htaccess 設定, 可以用 SetEnv 設定, 加入以下一行:

SetEnv PHP_ADMIN_VALUE “allow_url_fopen” = on

需要這個方法很方便, 可以繼續使用現有的 .htaccess 檔案, 但最大的限制是只可以設定 1 個參數, 例如:

SetEnv PHP_ADMIN_VALUE “allow_url_fopen = on”
SetEnv PHP_VALUE “post_max_size = 64M”

上面的第 2 行 “post_max_size” 會覆蓋第 1 行的設定.

Leave a Reply