วิธีแก้ไขข้อผิดพลาดร้ายแรงของ PHP: ขนาดหน่วยความจำที่อนุญาตคือ 8388608 ไบต์หมดลง

หนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดและน่าผิดหวังพบ PHP coders อ่าน:“ ข้อผิดพลาดร้ายแรง: ขนาดหน่วยความจำที่อนุญาตของ 8388608 ไบต์หมด…” ตามด้วยสิ่งเช่น“ (พยายามจัดสรร XXXX ไบต์) ใน /home/www/file.module ในบรรทัดที่ 12” เนื่องจากตามค่าเริ่มต้น PHP มีขีด จำกัด การใช้งานหน่วยความจำ 8 MB สำหรับสคริปต์ที่กำหนด นี่เป็นสิ่งที่ดีเพราะคุณไม่ต้องการสคริปต์ PHP อันธพาลที่จะทำให้เซิร์ฟเวอร์ของคุณล้มเหลวโดยการใช้หน่วยความจำทั้งหมด แต่บางครั้งคุณจะมีสคริปต์ PHP ที่เกินขีด จำกัด 8 เมกะไบต์โดยปกติ (พูดเพื่อนำเข้าหรืออัพโหลด) หากต้องการแก้ไขข้อผิดพลาด“ ข้อผิดพลาดร้ายแรง: ขนาดหน่วยความจำที่อนุญาตของ 8388608 ไบต์หมดลง…” ข้อผิดพลาดเพียงแค่แทรกบรรทัดของรหัสนี้ลงในสคริปต์ของคุณที่ด้านบน:

ini_set (“memory_limit”,”16M“);

memory_limit

สิ่งนี้จะตั้งค่าขีด จำกัด หน่วยความจำของคุณไว้ที่ 16 MBมากกว่า 8 MB คุณสามารถและควรซอกับหมายเลขนี้เพื่อที่จะต่ำที่สุดโดยไม่ต้องทำซ้ำข้อผิดพลาดที่ สิ่งนี้จะเปลี่ยนขีด จำกัด หน่วยความจำสำหรับไฟล์ PHP นั้นเท่านั้น

อีกวิธีหนึ่งคุณสามารถแก้ไขไฟล์ php.ini ของคุณเพื่อเพิ่มขีด จำกัด หน่วยความจำ สิ่งนี้จะมีผลกับสคริปต์ทั้งหมดบนเซิร์ฟเวอร์ของคุณ เพียงเปิด php.ini และค้นหาบรรทัดที่อ่าน“ memory_limit” และแก้ไข:

memory_limit = 16M

ข้อผิดพลาดร้ายแรง: ขนาดหน่วยความจำที่อนุญาตคือ 134217728 หมดแล้ว

ฉันสังเกตเห็นใน PHP ของตัวเองไฟล์ ini ที่ค่าเริ่มต้นของฉันสูงกว่ามากที่ 128M ดังนั้นถ้าฉันเคยได้รับข้อความแสดงข้อผิดพลาดนี้มันจะอ่าน: "ข้อผิดพลาดร้ายแรง: ขนาดหน่วยความจำที่อนุญาตของ 134217728 ไบต์หมดลง ... " และเห็นได้ชัดว่าเป็นปัญหาที่ใหญ่กว่ามาก แต่มันก็มีวิธีแก้ไขเช่นเดียวกับ“ ข้อผิดพลาดร้ายแรง: ขนาดหน่วยความจำที่อนุญาตของ 8388608 ไบต์หมดลง…” หรือ“ ข้อผิดพลาดร้ายแรง: ขนาดหน่วยความจำที่ได้รับอนุญาต 16777216 ไบต์หมดลง…” หรืออะไรก็ตาม เห็นได้ชัดว่าค่าเริ่มต้น memory_limit ถูก upped จาก 8M ถึง 16M ใน PHP 5.2.0 และขณะนี้ 128M สำหรับ PHP 5.3.0 ซึ่งจะอธิบายว่าทำไมคุณอาจไม่ได้รับข้อความแสดงข้อผิดพลาดนี้เลย

คุณยังสามารถปิดการใช้งานขีด จำกัด หน่วยความจำโดยการตั้งค่า memory_limit เป็น –1 ใน PHP.ini

memory_limit = -1

อย่างไรก็ตามนี่ไม่ใช่ความคิดที่ดีโดยทั่วไปด้วยเหตุผลที่ชัดเจน

หมายเหตุ: คุณยังสามารถใช้บรรทัด memory_limit ในหน้า. htaccess ของคุณ

ตอนนี้จำไว้ว่านี่เป็นเพียงวิธีแก้ปัญหาเท่านั้น จริงๆแล้วสคริปต์ PHP ของคุณควร ไม่ เกิน 8 MB ยกเว้นไฟล์ที่คุณอัปโหลดหรือทำอย่างอื่นที่เห็นได้ชัดว่าใช้เวลามากในการใช้หน่วยความจำ สิ่งที่คุณควรทำจริง ๆ ก็คือพยายามหาสาเหตุที่สคริปต์ของคุณใช้หน่วยความจำมากมายและพยายามแก้ไข วิธีหนึ่งในการพิจารณาจำนวนหน่วยความจำที่สคริปต์ PHP ของคุณใช้คือใช้ฟังก์ชัน memory_get_usage () PHP เพียงแค่สะท้อนมันทุกจุดในสคริปต์ของคุณเพื่อค้นหาว่าการใช้งานหน่วยความจำของคุณรวดเร็วแค่ไหน:

echo memory_get_usage ();

หากคุณได้รับข้อความแสดงข้อผิดพลาดนี้ใน Drupal หรือ Joomla ผู้ร้ายน่าจะเป็นโมดูลหรือแพ็คเกจใหม่ ตัวอย่างเช่นใน Drupal หน้าผู้ดูแลระบบ / โมดูลจะโหลด ทุกๆ โมดูลในการติดตั้ง Drupal ของคุณซึ่งสามารถรับได้ไม่มีขนหากโมดูลที่กำหนดเองเป็นรถบั๊กหรือแฮ็ก ลองปิดการใช้งานโมดูลทีละตัวเพื่อระบุว่าฝ่ายใดบ้างที่ทำให้ฝ่ายลง นอกจากนี้ผู้ให้บริการโฮสต์บางรายจะเพิกเฉยต่อความพยายามในการแก้ไขขีด จำกัด หน่วยความจำสำหรับโค้ด PHP ของคุณดังนั้นคุณอาจต้องติดต่อฝ่ายสนับสนุนการโฮสต์ของคุณเพื่อช่วยเหลือคุณ ฉันพบบางครั้งฉันจำเป็นต้องแก้ไขไฟล์ php.ini และบางครั้งใส่รหัสลงในไฟล์. htaccess หวังว่าข้อมูลนี้ที่นี่จะเพียงพอสำหรับคุณในการเดินทางของคุณ!

0

บทความที่คล้ายกัน

ทิ้งข้อความไว้