Giả sử tôi muốn thay đổi giới hạn tải lên tối đa cho trang web Wordpress và tôi đưa ra các giá trị sau:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
Vì vậy, cái nào Wordpress sẽ ưu tiên trong khi xử lý khi cần?
Giả sử tôi muốn thay đổi giới hạn tải lên tối đa cho trang web Wordpress và tôi đưa ra các giá trị sau:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
Vì vậy, cái nào Wordpress sẽ ưu tiên trong khi xử lý khi cần?
Câu trả lời:
Nó không rõ ràng từ câu hỏi của bạn những gì bạn đang thay đổi ở mỗi người trong số những tập tin này, nhưng tôi đoán trong từng trường hợp nó là các upload_max_filesize
thiết lập PHP .
Nói chung, các cài đặt sẽ được áp dụng theo thứ tự này, mỗi giá trị vượt quá giá trị trước đó:
ini_set()
Tuy nhiên, cài đặt này được định nghĩa là PHP_INI_PERDIR
, như được giải thích trên trang này có nghĩa là nó không thể được đặt bằng cách sử dụng ini_set
, vì vậy wp-config.php
không thể thay đổi nó. Vì vậy, trong ví dụ bạn đưa ra trong câu hỏi, nó sẽ lấy giá trị từ .htaccess là 64MB.
Bạn có thể xác minh điều này bằng cách chạy echo ini_get('upload_max_filesize');
đâu đó trong mã của bạn.
Lưu ý rằng có các giá trị địa điểm khác có thể được đặt mà tôi chưa liệt kê ở trên, chẳng hạn như các tệp php.ini cho mỗi người dùng và các bối cảnh cấu hình Apache khác . Ngoài ra, một số trong số này có thể bị vô hiệu hóa , vì vậy nếu máy chủ của bạn không được thiết lập để cho phép vượt quá .htaccess, bạn cũng sẽ không thể đặt giá trị ở đó.
Cũng lưu ý rằng Wordpress bao gồm một số biến cấu hình của chính nó, tương tác theo các cách khác nhau với cấu hình PHP. Chẳng hạn, WP_MEMORY_LIMIT
sẽ cố gắng nâng caomemory_limit
cài đặt PHP khi khởi động, nhưng có mã kiểm tra và không bao giờ hạ thấp nó . Không có quy tắc chung cho điều này, nó sẽ khác nhau cho các cài đặt khác nhau.
Về cơ bản cả ba tập tin được xem xét.
WordPress / máy chủ của bạn sẽ kiểm tra theo thứ tự sau:
wp-config.php > .htaccess > php.ini
Nếu một cái gì đó ở "mức cao hơn" (sau này trong chuỗi) đang giới hạn giá trị của bạn, giá trị cũ sẽ bị bỏ qua hoặc ghi đè. Nếu một phần của chuỗi bị thiếu, .htaccess
ví dụ, giá trị cao hơn sẽ được sử dụng.
Trong ví dụ của bạn, điều .htaccess
này sẽ giới hạn ở max_upload_size
mức 64 MB, mặc dù máy chủ của bạn sẽ ổn với tối đa 256 MB và WordPress cũng sẽ chấp nhận kích thước tệp lên tới 128 MB trước tiên.
Bạn cũng có thể đặt giới hạn khác thông qua .htaccess
tệp và bằng cách này, bạn sẽ ghi đè giá trị từ đó php.ini
, để nó không còn là giá trị thống trị. Điều này hoạt động trong nhiều môi trường lưu trữ, vì vậy rất có thể bạn có thể tăng hoặc giảm max_upload_size
theo cách này.
Nếu bạn có một máy chủ / máy chủ được cấu hình chặt chẽ hơn, có thể tùy chọn ghi đè cài đặt php.ini
bị vô hiệu hóa. Trong trường hợp này, ghi đè max_upload_size
từ .htaccess
công việc wont, vì vậy đây có thể là một yếu tố hạn chế.
.htaccess
nằm ở giữa danh sách, tại sao đó lại là yếu tố hạn chế?
Tôi nghĩ flomei nên chỉnh sửa câu trả lời, vì đó là câu trả lời đúng nhưng giải thích không tốt.
Php.ini -> .htaccess -> wp-config.php
thực sự là thứ tự mỗi tệp sẽ được đọc và sẽ đặt các giá trị đang xem xét rằng không có cài đặt nào được xác định trước đó. Nhưng trong trường hợp có một cài đặt được xác định trước đó, thì điều này sẽ chỉ là "quá mức" nếu cài đặt mới thấp hơn.
Điều đó có nghĩa là, nếu bạn có wp-config.php với 64Mb và .htaccess với 32 MB: wp-config.php sẽ không ghi đè cài đặt đó vì đã có giới hạn thấp hơn và bạn sẽ kết thúc với 32Mb.
Nhưng nếu bạn có wp-config.php với 32Mb và .htaccess với 64 MB, wp-config.php sẽ hạ cài đặt trước đó xuống 32Mb.
Chỉnh sửa: Để làm rõ, như IMSoP chỉ ra, wp-config.php chỉ cho phép bạn đặt kích thước hạn chế hơn những gì cài đặt PHP cho phép nếu bạn thay đổi 'WP_MEMORY_LIMIT', nó không cho phép bạn vượt qua điều đó. Vì vậy, nó không thực sự là một ghi đè cài đặt. Trong thực tế, có các kiểm tra riêng biệt được thực hiện tại các điểm khác nhau trong thời gian chạy. Nếu bạn đang thay đổi cài đặt php upload_max_filesize
khi anh ta giả định (câu hỏi không cho biết bạn đang thay đổi cài đặt nào), điều đó không có hiệu lực.
Ngoài ra, bạn sẽ phải tính đến việc post_max_size
phải lớn hơn upload_max_filesize
trong cài đặt php của bạn
upload_max_filesize
không thể thay đổi trong thời gian chạy (có lẽ vì nó quá muộn để nó có ảnh hưởng gì) nên wp-config.php
không thể ảnh hưởng nó một cách này hay cách khác. Một mặc định tích hợp 2MB cũng được đề cập và bạn chắc chắn có thể đặt nó cao hơn mức đó.
wp-config.php
thì ini_set('upload_max_filesize', '32M');
nó sẽ không có hiệu lực , bởi vì cài đặt đó không thể được đặt vào thời gian chạy như được định nghĩa làPHP_INI_PERDIR
. (Trừ khi trang tài liệu đó sai, nhưng điều đó dường như không thể xảy ra.)
wp-config.php
giá trị cụ thể và đặt các giá trị PHP tùy ý với ini_set()
. Theo tôi hiểu, wp-config.php
chủ yếu là để thiết lập các giá trị cấu hình cụ thể của WordPress và nhiều trong số này thực sự bị hạn chế (nghĩa là giới hạn trên áp đặt) bởi cài đặt cấu hình PHP cơ bản ( WP_MEMORY_LIMIT
như được đề cập trong câu trả lời). Đây là một điều WordPress. Tuy nhiên, khi thiết lập các giá trị cấu hình PHP tùy ý sử dụng ini_set()
trong PHP, không có hạn chế đó.