Wordpress ưu tiên cái nào khi nói đến php.ini, wp-config và .htaccess?


10

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:


13

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_filesizethiế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 đó:

  1. php.ini
  2. Chỉ thị của Apache trong .htaccess
  3. gọi đến 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.phpkhô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_LIMITsẽ 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.


php.ini luôn là người đầu tiên lựa chọn.
WpMania.Net

5

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, .htaccessví dụ, giá trị cao hơn sẽ được sử dụng.

Trong ví dụ của bạn, điều .htaccessnày sẽ giới hạn ở max_upload_sizemứ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 .htaccesstệ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_sizetheo 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.inibị vô hiệu hóa. Trong trường hợp này, ghi đè max_upload_sizetừ .htaccesscông việc wont, vì vậy đây có thể là một yếu tố hạn chế.


8
Làm thế nào điều này "không hoạt động như thế nào" khi bạn đưa ra một danh sách các ưu tiên, giống như câu hỏi yêu cầu? Và nếu .htaccessnằm ở giữa danh sách, tại sao đó lại là yếu tố hạn chế?
IMSoP

Tôi nghĩ rằng biểu hiện của tôi không rõ ràng. Tôi hiểu câu hỏi của anh ấy là "nếu tôi đặt giá trị cao hơn trong wp-config, liệu điều đó có 'thống trị' những người khác không?" và đó không phải là cách nó hoạt động. ;-) @bns đã giải thích rõ hơn về điều đó.
flomei

Phải, tôi hiểu ý của bạn bây giờ. Tuy nhiên, như tôi đã nhận xét dưới câu trả lời của bns, tôi không thể tìm thấy tài liệu nào ủng hộ cho tuyên bố rằng bạn không thể ghi đè với giá trị cao hơn. Giá trị wp-config.php sẽ luôn bị bỏ qua, như được giải thích trong câu trả lời của tôi, nhưng tôi khá chắc chắn rằng giá trị cao hơn trong .htaccess sẽ ghi đè lên giá trị thấp hơn trong php.ini.
IMSoP

Bạn đúng một phần, nhưng ghi đè các giá trị php.ini từ .htaccess có thể bị vô hiệu hóa, xem câu trả lời được cập nhật của tôi.
flomei

Bản cập nhật của bạn vẫn ngụ ý rằng bạn chỉ có thể đặt giá trị thấp hơn thông qua .htaccess. Tôi biết không có lý do gì bạn không thể đặt giá trị cao hơn ở đó. Thực tế là cơ chế có thể bị vô hiệu hóa là một điểm tốt và tôi đã nhấn mạnh trong câu trả lời của mình, nhưng giả sử mọi cài đặt PHP đều được phép trong .htaccess, thì một giá trị trong .htaccess sẽ hoàn toàn "thống trị" một giá trị trong php.ini cho cùng một thiết lập.
IMSoP

3

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.phpthự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_filesizekhi 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_sizephải lớn hơn upload_max_filesizetrong cài đặt php của bạn


2
Bạn có thể liên kết với bất kỳ tài liệu nào cho điều này "chỉ vượt quá nếu giá trị mới thấp hơn", bởi vì nó chắc chắn không đúng với bất kỳ cài đặt PHP nào khác mà tôi đã thấy. Nó cũng không được đề cập trên trang hướng dẫn này . Gì được đề cập, như tôi đã chỉ ra trong câu trả lời của tôi, là upload_max_filesizekhô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.phpkhô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 đó.
IMSoP

Về cơ bản đó là những gì nhóm hỗ trợ nhà cung cấp dịch vụ lưu trữ của tôi đã gặp phải khi tôi gặp vấn đề tương tự, tôi sẽ tìm kiếm e-mail và cập nhật nếu tôi tìm thấy nó. Tôi không thực sự chắc chắn nếu bên trong máy chủ thực sự bạn ghi đè giá trị hay chỉ là việc xác minh được thực hiện trong thời gian thực hiện tại các địa điểm khác nhau, do đó hành vi là như thế này.
bns

1
Chỉ cần nhắc lại, nếu dòng bạn thêm vào wp-config.phpthì 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.)
IMSoP

Không, bạn đúng. Nó không thực sự là một ghi đè cài đặt. Nó chỉ là một hạn chế riêng biệt khác, tôi sẽ cập nhật từ ngữ để tránh nhầm lẫn.
bns

1
@IMSoP / bns - Tôi nghĩ có lẽ đã có một chút nhầm lẫn giữa các wp-config.phpgiá trị cụ thể và đặt các giá trị PHP tùy ý với ini_set(). Theo tôi hiểu, wp-config.phpchủ 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_LIMITnhư đượ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ế đó.
MrWhite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.