Wordpress รุ่นใดที่ให้ความสำคัญกับ php.ini, wp-config และ. htaccess


10

สมมติว่าฉันต้องการเปลี่ยนขีด จำกัด การอัปโหลดสูงสุดสำหรับเว็บไซต์ Wordpress และฉันให้ค่าต่อไปนี้:

wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB

ดังนั้น Wordpress อันไหนที่จะให้ความสำคัญกับการประมวลผลเมื่อจำเป็น?

คำตอบ:


13

มันไม่ชัดเจนจากคำถามของคุณสิ่งที่คุณมีการเปลี่ยนแปลงในแต่ละไฟล์เหล่านี้ แต่ฉันเข้าใจในแต่ละกรณีมันเป็นการตั้งค่า PHPupload_max_filesize

โดยทั่วไปการตั้งค่าจะถูกนำไปใช้ในคำสั่งนี้โดยแต่ละค่าจะมีผลต่อค่าก่อนหน้า:

  1. php.ini
  2. คำสั่ง Apache ใน. htaccess
  3. โทรไปที่ ini_set()

อย่างไรก็ตามการตั้งค่านี้ถูกกำหนดเป็นPHP_INI_PERDIRซึ่งตามที่อธิบายไว้ในหน้านี้หมายความว่าไม่สามารถตั้งค่าได้โดยใช้ini_setดังนั้นจึงwp-config.phpไม่สามารถเปลี่ยนได้ ดังนั้นในตัวอย่างที่คุณตั้งคำถามมันจะใช้ค่าจาก. htaccess เป็น 64MB

คุณสามารถตรวจสอบสิ่งนี้ได้โดยเรียกใช้echo ini_get('upload_max_filesize');บางรหัสของคุณ

ทราบว่ามีสถานที่อื่น ๆ ค่าสามารถเป็นชุดที่ผมยังไม่ได้ระบุไว้ข้างต้นเช่นไฟล์ php.ini ต่อผู้ใช้และอื่น ๆ บริบทการกำหนดค่า นอกจากนี้บางส่วนยังสามารถปิดใช้งานได้ดังนั้นหากเซิร์ฟเวอร์ของคุณไม่ได้ตั้งค่าให้ใช้งานแบบ over-rides ใน. htaccess คุณจะไม่สามารถตั้งค่าที่นั่นได้

นอกจากนี้โปรดทราบว่า Wordpress มีตัวแปรการกำหนดค่าของตัวเองบางตัวซึ่งมีการโต้ตอบในรูปแบบต่างๆกับการกำหนดค่า PHP ยกตัวอย่างเช่นWP_MEMORY_LIMITจะพยายามที่จะยกระดับ PHP การmemory_limitตั้งค่าที่เริ่มต้น แต่มีรหัสที่จะตรวจสอบและไม่เคยลดความมัน ไม่มีกฎทั่วไปสำหรับสิ่งนี้มันจะแตกต่างกันสำหรับการตั้งค่าที่แตกต่างกัน


php.ini เป็นคนแรกที่เลือก
WpMania.Net

5

โดยทั่วไปไฟล์ทั้งสามจะถูกนำมาพิจารณา

WordPress / เซิร์ฟเวอร์ของคุณจะตรวจสอบตามลำดับต่อไปนี้:

wp-config.php > .htaccess > php.ini

หากบางสิ่งใน "ระดับที่สูงกว่า" (ต่อมาอยู่ในห่วงโซ่) กำลัง จำกัด ค่าของคุณค่าเดิมจะถูกละเว้นหรือเขียนทับ หากชิ้นส่วนของห่วงโซ่หายไปค่าใน.htaccessตัวอย่างจะใช้ค่าที่สูงขึ้นถัดไปแทน

ในตัวอย่างของคุณ.htaccessจะ จำกัด เพียงmax_upload_size64 MB แม้ว่าเซิร์ฟเวอร์ของคุณจะปรับได้สูงสุด 256 MB และ WordPress จะยอมรับขนาดไฟล์สูงสุด 128 MB ก่อน

นอกจากนี้คุณยังสามารถตั้งค่าขีด จำกัด ที่แตกต่างกันผ่าน.htaccessไฟล์และโดยการทำเช่นนี้คุณเขียนทับค่าจากphp.iniเพื่อที่จะไม่ได้เป็นค่าที่ครอบงำ วิธีนี้ใช้งานได้ในสภาพแวดล้อมการโฮสต์จำนวนมากดังนั้นโอกาสค่อนข้างดีที่คุณสามารถเพิ่มหรือลดระดับmax_upload_sizeด้วยวิธีนี้

หากคุณมีการโฮสต์ / เซิร์ฟเวอร์ที่มีการกำหนดค่าอย่างเข้มงวดมากขึ้นอาจเป็นไปได้ว่าตัวเลือกในการยกเลิกการตั้งค่าphp.iniนั้นถูกปิดใช้งาน ในกรณีนี้การเอาชนะmax_upload_sizeจากการ.htaccessทำงานไม่ได้ดังนั้นนี่อาจเป็นปัจจัย จำกัด


8
สิ่งนี้ "ไม่ทำงานอย่างไร" เมื่อคุณแสดงรายการลำดับความสำคัญเช่นเดียวกับคำถามที่ถาม และถ้า.htaccessอยู่ในกลางรายการทำไมสิ่งนั้นจะเป็นปัจจัย จำกัด ?
IMSoP

ฉันคิดว่าการแสดงออกของฉันไม่ชัดเจน ฉันเข้าใจคำถามของเขาว่า "ถ้าฉันตั้งค่าที่สูงขึ้นใน wp-config นั่นจะ 'ครอบงำ' คนอื่นหรือไม่" และนั่นไม่ใช่วิธีการทำงาน ;-) @bns ทำคำอธิบายได้ดีกว่าในเรื่องนั้น
flomei

ใช่ฉันเห็นสิ่งที่คุณหมายถึงตอนนี้ อย่างไรก็ตามในขณะที่ฉันแสดงความคิดเห็นภายใต้คำตอบของ bns ฉันไม่พบเอกสารสำรองข้อมูลการอ้างสิทธิ์ที่คุณไม่สามารถแทนที่ด้วยค่าที่สูงขึ้น ค่า wp-config.php จะถูกละเว้นเสมอดังที่อธิบายไว้ในคำตอบของฉัน แต่ฉันค่อนข้างมั่นใจว่าค่าที่สูงขึ้นใน. htaccess จะแทนที่ค่าที่ต่ำกว่าใน php.ini
IMSoP

คุณถูกบางส่วน แต่การยกเลิกค่า php.ini จาก. htaccess สามารถปิดใช้งานได้โปรดดูคำตอบที่อัปเดตของฉัน
flomei

การอัปเดตของคุณยังคงบอกเป็นนัยว่าคุณสามารถตั้งค่าที่ต่ำกว่าผ่าน. htaccess ฉันรู้ว่าไม่มีเหตุผลที่คุณไม่สามารถตั้งค่าที่สูงขึ้นได้ ความจริงที่ว่ากลไกสามารถปิดการใช้งานเป็นจุดที่ดีและหนึ่งฉันคัดค้านในคำตอบของฉัน แต่สมมติว่าการตั้งค่า PHP ใด ๆที่ได้รับอนุญาตใน. htaccess แล้วค่าใน. htaccess จะ "ครอง" ค่าใน php.ini สำหรับการตั้งค่าเดียวกัน
IMSoP

3

ฉันคิดว่า flomei ควรแก้ไขคำตอบเพราะนั่นคือคำตอบที่ถูกต้อง แต่การอธิบายที่ไม่ดี Php.ini -> .htaccess -> wp-config.phpเป็นจริงตามลำดับที่แต่ละไฟล์จะถูกอ่านและจะตั้งค่าการพิจารณาว่าไม่มีการตั้งค่าไว้ก่อนหน้านี้ แต่ในกรณีที่มีการตั้งค่าที่กำหนดไว้ก่อนหน้านี้จะเป็น "over-ridden" เฉพาะในกรณีที่การตั้งค่าใหม่จะต่ำกว่า

นั่นหมายความว่าหากคุณมี wp-config.php ที่มี 64Mb และ. htaccess ที่มี 32 MB: wp-config.php จะไม่แทนที่การตั้งค่านั้นเนื่องจากมีขีด จำกัด ต่ำกว่าและคุณจะจบด้วย 32Mb

แต่ถ้าคุณมี wp-config.php ที่มี 32Mb และ. htaccess ที่มี 64 MB wp-config.php จะลดการตั้งค่าก่อนหน้าเป็น 32Mb

แก้ไข: หากต้องการชี้แจงอย่างชัดเจนเนื่องจาก IMSoP ชี้ให้เห็น wp-config.php เพียงแค่ให้คุณกำหนดขนาดที่ จำกัด กว่าการตั้งค่า PHP ที่อนุญาตหากคุณเปลี่ยน 'WP_MEMORY_LIMIT' มันจะไม่ปล่อยให้คุณไปไกลกว่านั้น ดังนั้นจึงไม่ใช่การตั้งค่าแทนที่จริง ๆ ในความเป็นจริงมีการตรวจสอบแยกทำในจุดต่าง ๆ ที่รันไทม์ หากคุณกำลังเปลี่ยนการตั้งค่า php upload_max_filesizeในขณะที่เขาสมมติ (คำถามไม่ได้ระบุว่าคุณกำลังเปลี่ยนการตั้งค่าใด) แสดงว่าไม่มีผลใด ๆ

นอกจากนี้คุณจะต้องคำนึงถึงว่าpost_max_sizeจะต้องมากกว่าupload_max_filesizeในการตั้งค่า php ของคุณ


2
คุณสามารถลิงก์ไปยังเอกสารใด ๆ สำหรับเรื่องนี้ "เฉพาะการขี่มากเกินไปหากค่าใหม่ต่ำกว่า" เพราะแน่นอนว่ามันไม่จริงสำหรับการตั้งค่า PHP อื่น ๆ ที่ฉันเคยเห็น มันจะไม่กล่าวถึงในหน้าคู่มือฉบับนี้ สิ่งที่ถูกกล่าวถึงเป็นฉันชี้ให้เห็นในคำตอบของฉันคือการที่upload_max_filesizeไม่สามารถเปลี่ยนแปลงได้ที่รันไทม์ (น่าจะเพราะมันสายเกินไปสำหรับมันจะมีผลกระทบใด ๆ ) เพื่อให้wp-config.phpไม่สามารถส่งผลกระทบต่อมันด้วยวิธีหนึ่งหรืออื่น ๆ ในตัวเริ่มต้นของ 2MB ยังกล่าวถึงและคุณสามารถแน่นอนตั้งไว้สูงกว่า
IMSoP

นั่นเป็นสิ่งที่ทีมสนับสนุนผู้ให้บริการโฮสติ้งของฉันมีให้ฉันเมื่อฉันมีปัญหาเดียวกันฉันจะค้นหาอีเมลและอัปเดตหากพบ ฉันไม่แน่ใจว่าจริง ๆ แล้วถ้าภายในเซิร์ฟเวอร์คุณแทนที่ค่าจริง ๆ หรือเป็นเพียงการยืนยันที่กระทำในเวลาดำเนินการในสถานที่ต่าง ๆ ดังนั้นพฤติกรรมจึงเป็นเช่นนี้
bns

1
เพียงแค่จะย้ำถ้าเส้นที่คุณกำลังเพิ่มจะwp-config.phpเป็นini_set('upload_max_filesize', '32M');ก็จะมีไม่มีผลกระทบเลยทีเดียวเพราะการตั้งค่าที่ไม่สามารถตั้งค่าที่ใช้เวลาเป็นมันถูกกำหนดให้เป็น PHP_INI_PERDIR(ยกเว้นว่าหน้าเอกสารนั้นผิด แต่ดูเหมือนไม่น่าเป็นไปได้)
IMSoP

ไม่ถูกต้อง ไม่ใช่การตั้งค่าแทนที่ มันเป็นข้อ จำกัด อีกข้อที่แยกจากกันฉันจะอัปเดตข้อความเพื่อหลีกเลี่ยงความสับสน
bns

1
@IMSoP / bns - ฉันคิดว่าอาจมีความสับสนเล็กน้อยระหว่างwp-config.phpค่าเฉพาะและการตั้งค่า PHP ด้วยตัวini_set()เอง ตามที่ฉันเข้าใจwp-config.phpเป็นหลักเกี่ยวกับการตั้งค่า WordPress เฉพาะค่า config และสิ่งเหล่านี้ถูกจำกัดแน่นอน(เช่นกำหนดขีด จำกัด บน) โดยการตั้งค่าการกำหนดค่า PHP พื้นฐาน (เช่นWP_MEMORY_LIMITที่กล่าวถึงในคำตอบ) นี่คือสิ่งที่ WordPress อย่างไรก็ตามเมื่อตั้งค่า PHP config เองโดยใช้ini_set()ใน PHP ไม่มีข้อ จำกัด ดังกล่าว
MrWhite
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.