簡體   English   中英

無法在 php.ini 中更改 upload_max_filesize 或 post_max_size

[英]Cannot change upload_max_filesize or post_max_size in php.ini

請記住,我不是系統管理員,我只是一名開發人員。 我找不到和我一樣有確切問題的人,只是相似,而且他們的“修復”似乎都不起作用。

我目前正在運行一個 Amazon EC2 實例。

CentOS 6.2
Nginx 1.2.2
PHP 5.3.16 with APC
Percona 5.5.24 // not currently using this as I am using an RDS

我已將我的 php.ini (/etc/php.ini) 設置為以下

upload_max_filesize=10M
post_max_filesize=20M

重新加載配置后,通過 ssh 使用php -i ,這些設置似乎已加載。 顯示upload_max_filesize=10M等。

使用phpinfo()ini_get時,兩個選項都返回為4M

phpinfo()表示我正在編輯的文件是已加載的文件 ( /etc/php.ini )。

我也跑過php -i | grep "\.ini" php -i | grep "\.ini"檢查加載了哪些文件,沒有不必要的加載配置。 我什至單獨檢查了每個加載的文件,以檢查它們里面沒有設置。

此外,有人建議我嘗試使用.user.ini配置文件。 這也沒有改變值。

ini_set()也不起作用。

我有點不知所措。

編輯:不確定這是否有幫助,但我正在使用這個 AMI http://megumi-cloud.com/

文件名:

nginx/sites-available/default

添加:

location ~ \.php$ {
      fastcgi_param PHP_VALUE "upload_max_filesize = 50M \n post_max_size=51M";
}

運行:從命令行: sudo service nginx restart

嘗試執行這樣的命令:

php --ini

它會告訴你哪些 ini 文件被 php 加載了。

示例輸出:

[admin@staging ~]$ php --ini
Configuration File (php.ini) Path: /usr/local/etc
Loaded Configuration File:         /usr/local/etc/php.ini
Scan for additional .ini files in: /usr/local/etc/php
Additional .ini files parsed:      /usr/local/etc/php/extensions.ini

我聯系了制作 AMI 的人,發現還有其他配置文件覆蓋了php.ini

有 2 個文件保存設置

/etc/php-fpm.d/www.conf // This is the file which holds upload_max_filesize and post_max_size, among others
/etc/php-fpm.conf

顯然,不同配置的位置可能不同,但希望這能幫助人們了解還需要尋找什么。

如果您在 php.ini 文件中明確設置了這些值,並且在您運行 PHP 腳本時它們不相同,那么某些東西已經覆蓋了它們。 您知道您的 php.ini 設置是正確的,因為 PHP 信息的 CLI 版本顯示了新設置。

我也跑過 php -i | grep ".ini" 檢查加載了哪些文件,沒有不必要的加載配置。 我什至單獨檢查了每個加載的文件,以檢查它們里面沒有設置。

這很好,但它告訴您 what.ini 文件已從 PHP CLI 加載——而不是您的應用程序。

您需要檢查phpinfo()輸出的Additional.ini files parsed部分,以准確查看從您的 Web 服務器加載的文件。 其中一個文件正在覆蓋您的設置。

最后,如果這些文件都不是罪魁禍首,您應該在項目中對ini_set()進行全局查找,以確保某些流氓腳本沒有為您設置這些值(試圖提供幫助)。

繼續挖掘,您會在這兩個地方之一找到罪魁禍首。

我遇到了 PHP 應用程序抱怨上傳文件大小的相同問題。 使用命令 lilne version of php (php --ini) 我確定 php.ini 文件為:/etc/php5/cli/php.ini

使用 php -info 我驗證了設置。 但應用程序仍然給了我同樣的錯誤。 我發現 PHP 對於 CLI 和 Apache 有不同的 ini 文件。 檢查你的 /etc/php5 文件夾,它有 apache2 和 cli 文件夾,里面有單獨的 ini 文件。 只需編輯 /etc/php5/cli/php.ini 來更改 apache 設置。

重新啟動您的網絡服務器。 這就是您需要做的全部。

請記住,我不是系統管理員,我只是一名開發人員。 我找不到和我一樣有確切問題的人,只是相似,而且他們的“修復”似乎都不起作用。

我在同一條船上,遇到同樣的問題,結果發現它們是相關的!

我包含了增加upload_max_filesizepost_max_size的行,但是這些行被忽略了, phpinfo()返回了默認值。 我已經重新啟動了 Apache,並且還檢查了正在加載的其他.ini文件,但並不高興。

解決方案是我在文件開頭附近添加了我的行來增加這些參數,並且它們稍后在同一個文件中被覆蓋了!

所以,如果您遇到這個問題,請確保您沒有犯同樣的愚蠢錯誤,然后Ctrl-F找到聲明的原始實例,然后編輯它而不是添加您自己的;)

類似於此處已經指出的內容:在 Ubuntu 16.04 上,我執行了systemctl reload php7.0-fpm以使我對upload_max_filesize的更改生效。 我不必重新加載/重新啟動 nginx。

(php7.0 是我機器上安裝的當前 PHP 版本。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM