如果您不知道「PHP_INI_PERDIR」或「PHP_INI_USER」是什麼,或者它們與設定 .user.ini 檔案的關係,請查看 ini.list 頁面: https://php.dev.org.tw/manual/en/ini.list.php
基本上,在「可更改」欄中標記為 PHP_INI_SYSTEM 的任何內容都不能在 .user.ini 檔案中設定(所以不要再嘗試了)。它只能在主要的 php.ini 層級設定。
PHP 支援基於每個目錄的組態 INI 檔案。這些檔案僅由 CGI/FastCGI SAPI 處理。此功能取代了 PECL htscanner 擴充套件。如果您以 Apache 模組方式執行 PHP,請使用 .htaccess 檔案達到相同效果。
除了主要的 php.ini 檔案之外,PHP 還會掃描每個目錄中的 INI 檔案,從請求的 PHP 檔案所在的目錄開始,一直到目前的網頁根目錄(在 $_SERVER['DOCUMENT_ROOT'] 中設定)。如果 PHP 檔案位於網頁根目錄之外,則只會掃描其所在的目錄。
只有模式為 INI_PERDIR
和 INI_USER
的 INI 設定才會在 .user.ini 樣式的 INI 檔案中被識別。
兩個新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl,控制使用者 INI 檔案的使用。
user_ini.filename 設定 PHP 在每個目錄中尋找的檔案名稱;如果設定為空字串,PHP 根本不會掃描。預設值為 .user.ini
。
user_ini.cache_ttl 控制使用者 INI 檔案重新讀取的頻率。預設值為 300 秒(5 分鐘)。
如果您不知道「PHP_INI_PERDIR」或「PHP_INI_USER」是什麼,或者它們與設定 .user.ini 檔案的關係,請查看 ini.list 頁面: https://php.dev.org.tw/manual/en/ini.list.php
基本上,在「可更改」欄中標記為 PHP_INI_SYSTEM 的任何內容都不能在 .user.ini 檔案中設定(所以不要再嘗試了)。它只能在主要的 php.ini 層級設定。
「如果您使用的是 Apache,請使用 .htaccess 檔案來達到相同的效果。」
需要說明的是,這僅適用於 Apache 模組模式。如果您在 Apache CGI/FastCGI 伺服器的 .htaccess 中放置 php 指令,這會導致伺服器出現 500 錯誤。因此,很遺憾,您無法建立同時適用於這兩種託管類型的設定,至少沒有任何直接的方法。
由於 .user.ini 是從公開目錄讀取的,因此其內容將提供給任何請求它的人,並可能向他們顯示敏感的設定設定。
將這些行添加到您的 .htaccess 中以阻止對它的請求
<Files ".user.ini">
Require all denied
</Files>
新手的陷阱,雖然我自己也不是那麼新手。
user_ini.cache_ttl 的預設設定為 300 秒,這表示它每 5 分鐘刷新一次。如果您正在調整 .user.ini 中的設定,則可能需要長達 5 分鐘才能看到實驗結果。
如果您無法存取可以更改此設定的 php.ini,則您必須學會非常有耐心。
對於那些正在尋找範例的人... .user.ini 應該格式化為簡單的 [KEY]=[VALUE]\n 集合列表。例如,一個僅用於將最大允許上傳檔案大小更改為 5Mb 的單行 .user.ini 檔案是
upload_max_filesize="5M"
這篇文章應該寫得更清楚些。
「.htaccess 風格的 INI 檔案」對我來說意味著 ini 設定必須遵循 .htaccess 中使用的語法,但事實並非如此!
你必須使用
register_globals=on
而不是
php_flag register_globals on
此外,如果您設定了較長的處理程序逾時時間,變更可能需要一段時間才能傳播到所有處理程序。
重新啟動 php-fpm 可以更快得到結果 :)