上傳大文件需調整 upload_max_filesize、post_max_size 等參數,修改 php.ini 並重啟 Apache/Nginx 後仍不生效,phpinfo() 顯示的值仍是舊值。
# 命令行查看
php --ini
# 或腳本中
phpinfo(); // 尋找 "Loaded Configuration File"
不要憑感覺修改 /etc/php.ini,可能實際讀取的是 /usr/local/php/etc/php.ini 或 FPM 專用配置。
若 PHP 以 nobody、www-data、php-fpm 等低權限用戶運行,而 php.ini 屬主為 root 且權限為 644,雖然可讀,但某些情況下(如 PHP-FPM 以 root 啟動再切換用戶)可能導致讀取異常。
# 查看進程用戶
ps aux | grep php-fpm
# 修正權限
chown www-data:www-data /path/to/php.ini
chmod 644 /path/to/php.ini
常見場景:
/etc/php/7.4/fpm/php.ini/usr/local/php/etc/php.ini解決:以 php --ini 或 phpinfo() 為準,只修改該文件。
# PHP-FPM
systemctl restart php7.4-fpm
# 或
service php-fpm restart
# Apache 模塊模式
systemctl restart apache2
# Nginx + PHP-FPM 需重啟 PHP-FPM,Nginx 僅轉發
<?php
echo ini_get('upload_max_filesize'); // 應輸出新值
var_dump(ini_get('post_max_size'));
ini_set('upload_max_filesize', '100M');
ini_set('post_max_size', '100M');
// 注意:部分核心參數(如 memory_limit)在腳本啟動後不可改
php --ini 定位 Loaded Configuration Filephpinfo() 或 ini_get() 驗證按照以上步驟操作,99% 的「修改不生效」問題都能解決。