สมมติว่าฉันต้องการเปลี่ยนขีด จำกัด การอัปโหลดสูงสุดสำหรับเว็บไซต์ Wordpress และฉันให้ค่าต่อไปนี้:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
ดังนั้น Wordpress อันไหนที่จะให้ความสำคัญกับการประมวลผลเมื่อจำเป็น?
สมมติว่าฉันต้องการเปลี่ยนขีด จำกัด การอัปโหลดสูงสุดสำหรับเว็บไซต์ Wordpress และฉันให้ค่าต่อไปนี้:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
ดังนั้น Wordpress อันไหนที่จะให้ความสำคัญกับการประมวลผลเมื่อจำเป็น?
คำตอบ:
มันไม่ชัดเจนจากคำถามของคุณสิ่งที่คุณมีการเปลี่ยนแปลงในแต่ละไฟล์เหล่านี้ แต่ฉันเข้าใจในแต่ละกรณีมันเป็นการตั้งค่า PHPupload_max_filesize
โดยทั่วไปการตั้งค่าจะถูกนำไปใช้ในคำสั่งนี้โดยแต่ละค่าจะมีผลต่อค่าก่อนหน้า:
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ตั้งค่าที่เริ่มต้น แต่มีรหัสที่จะตรวจสอบและไม่เคยลดความมัน ไม่มีกฎทั่วไปสำหรับสิ่งนี้มันจะแตกต่างกันสำหรับการตั้งค่าที่แตกต่างกัน
โดยทั่วไปไฟล์ทั้งสามจะถูกนำมาพิจารณา
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ทำงานไม่ได้ดังนั้นนี่อาจเป็นปัจจัย จำกัด
.htaccessอยู่ในกลางรายการทำไมสิ่งนั้นจะเป็นปัจจัย จำกัด ?
ฉันคิดว่า 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 ของคุณ
upload_max_filesizeไม่สามารถเปลี่ยนแปลงได้ที่รันไทม์ (น่าจะเพราะมันสายเกินไปสำหรับมันจะมีผลกระทบใด ๆ ) เพื่อให้wp-config.phpไม่สามารถส่งผลกระทบต่อมันด้วยวิธีหนึ่งหรืออื่น ๆ ในตัวเริ่มต้นของ 2MB ยังกล่าวถึงและคุณสามารถแน่นอนตั้งไว้สูงกว่า
wp-config.phpเป็นini_set('upload_max_filesize', '32M');ก็จะมีไม่มีผลกระทบเลยทีเดียวเพราะการตั้งค่าที่ไม่สามารถตั้งค่าที่ใช้เวลาเป็นมันถูกกำหนดให้เป็น PHP_INI_PERDIR(ยกเว้นว่าหน้าเอกสารนั้นผิด แต่ดูเหมือนไม่น่าเป็นไปได้)
wp-config.phpค่าเฉพาะและการตั้งค่า PHP ด้วยตัวini_set()เอง ตามที่ฉันเข้าใจwp-config.phpเป็นหลักเกี่ยวกับการตั้งค่า WordPress เฉพาะค่า config และสิ่งเหล่านี้ถูกจำกัดแน่นอน(เช่นกำหนดขีด จำกัด บน) โดยการตั้งค่าการกำหนดค่า PHP พื้นฐาน (เช่นWP_MEMORY_LIMITที่กล่าวถึงในคำตอบ) นี่คือสิ่งที่ WordPress อย่างไรก็ตามเมื่อตั้งค่า PHP config เองโดยใช้ini_set()ใน PHP ไม่มีข้อ จำกัด ดังกล่าว