วิธีแก้ไขข้อผิดพลาดร้ายแรงของ PHP: ขนาดหน่วยความจำที่อนุญาตคือ 8388608 ไบต์หมดลง
ini_set (“memory_limit”,”16M“);
สิ่งนี้จะตั้งค่าขีด จำกัด หน่วยความจำของคุณไว้ที่ 16 MBมากกว่า 8 MB คุณสามารถและควรซอกับหมายเลขนี้เพื่อที่จะต่ำที่สุดโดยไม่ต้องทำซ้ำข้อผิดพลาดที่ สิ่งนี้จะเปลี่ยนขีด จำกัด หน่วยความจำสำหรับไฟล์ PHP นั้นเท่านั้น
อีกวิธีหนึ่งคุณสามารถแก้ไขไฟล์ php.ini ของคุณเพื่อเพิ่มขีด จำกัด หน่วยความจำ สิ่งนี้จะมีผลกับสคริปต์ทั้งหมดบนเซิร์ฟเวอร์ของคุณ เพียงเปิด php.ini และค้นหาบรรทัดที่อ่าน“ memory_limit” และแก้ไข:
memory_limit = 16M
ฉันสังเกตเห็นใน 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 หวังว่าข้อมูลนี้ที่นี่จะเพียงพอสำหรับคุณในการเดินทางของคุณ!
ทิ้งข้อความไว้