ini_set('memory_limit', ) ใช้งานไม่ได้และส่งคืนค่า false; ไม่เข้าใจว่าทำไม

ini_set('memory_limit', '128M'); // Returns false; memory_limit unchanged

ฉันไม่พบรายการสิ่งที่อาจทำให้เกิดสิ่งนี้ จนถึงตอนนี้ฉันตรวจสอบแล้ว:

  • เซฟโหมด: ปิดการใช้งาน
  • Disable_functions: ว่างเปล่า
  • php_admin_value: ไม่มีที่ฉันหาได้ (มีวิธีรู้แน่นอนหรือไม่)

ฉันหมดไอเดียแล้ว! ini_set ทำงานอย่างถูกต้องกับพารามิเตอร์อื่น ๆ (เช่น "display_errors")


person Thomas Bonini    schedule 02.05.2011    source แหล่งที่มา
comment
คุณใช้ PHP เวอร์ชันใดอยู่?   -  person James C    schedule 02.05.2011
comment
มันล้มเหลวสำหรับคำสั่งใด ๆ ที่ส่งไปยัง ini_set() หรือเพียงแค่ memory_limit ค่าใด ๆ สำหรับ memory_limit ล้มเหลวหรือเพียงแค่ 128M คุณจะตรวจสอบได้อย่างไรว่าค่าไม่มีการเปลี่ยนแปลง? ฉันสังเกตเห็นพฤติกรรมนี้ในเซิร์ฟเวอร์สองสามแห่งที่นี่เช่นกัน ดังนั้นฉันจึงสนใจมากที่จะดูว่าเรากำลังประสบปัญหาเดียวกันหรือไม่   -  person    schedule 02.05.2011
comment
คุณใช้แพลตฟอร์มโฮสติ้งที่ใช้ร่วมกันหรือเป็นเครื่องที่คุณติดตั้ง/กำหนดค่าเอง?   -  person James C    schedule 02.05.2011
comment
@James: ฉันใช้ PHP เวอร์ชัน 5.2.6-1+lenny9   -  person Thomas Bonini    schedule 02.05.2011
comment
@Phoenix: มันล้มเหลวเฉพาะกับ memory_limit ฉันตรวจสอบว่าค่าไม่เปลี่ยนแปลงโดยการเรียก ini_get   -  person Thomas Bonini    schedule 02.05.2011
comment
@James คำถามที่ 2: นี่คือเซิร์ฟเวอร์เฉพาะที่ผู้ดูแลระบบเครือข่ายของเราตั้งค่าไว้ นี่คือเซิร์ฟเวอร์ dev ของเราที่เราทดสอบโค้ดของเรา บนเซิร์ฟเวอร์ที่ใช้งานจริง ini_set ทำงานได้อย่างถูกต้อง   -  person Thomas Bonini    schedule 02.05.2011


คำตอบ (2)


หากไม่ใช่ปัญหาเวอร์ชัน PHP ที่โพสต์ไว้แล้ว ให้ลองตรวจสอบว่าไม่มีสิ่งใดในเครื่องที่ขัดขวางไม่ให้คุณเพิ่มขีดจำกัดนี้

จะตรวจสอบได้อย่างไรว่าติดตั้ง Suhosin หรือไม่

แก้ไข (หลังจากติดตั้ง Suhosin แล้ว):

รายละเอียดการกำหนดค่าอยู่ที่นี่: http://www.hardened-php.net/suhosin/configuration.html ฉันสงสัยว่าจะมีไฟล์ใน /etc/php.d/ ที่คุณสามารถแก้ไขได้เพื่อเพิ่มขอบเขตขีดจำกัดหน่วยความจำ ตัวแปรการกำหนดค่าที่คุณต้องแก้ไขคือ: suhosin.memory_limit

person James C    schedule 02.05.2011
comment
บิงโก! เซิร์ฟเวอร์นี้ได้รับการปกป้องด้วย Suhosin Patch 0.9.10.. ตอนนี้มันคืออะไร? จะลองเข้า google ดูครับ ว่าใช่ปัญหาหรือเปล่า - person Thomas Bonini; 02.05.2011
comment
ก็น่าจะประมาณนี้ แต่ฉันไม่พบตัวเลือกการตั้งค่าที่บอกว่าอย่าไปสูงกว่า 64M.. คุณรู้ไหมว่ามันสามารถกำหนดค่าได้ที่ไหน? หรือมันทำงานแบบนี้ตามค่าเริ่มต้น? ไม่ว่าในกรณีใด ฉันได้เปิดตั๋วให้กับผู้ดูแลระบบเครือข่ายของเรา หวังว่าเขาจะสามารถจัดการเรื่องนี้ได้ - person Thomas Bonini; 02.05.2011
comment
ตกลง ผู้ดูแลระบบเครือข่ายของเราเปลี่ยนตัวเลือก sushosin และตอนนี้ก็ใช้งานได้แล้ว คุณ - person Thomas Bonini; 02.05.2011

คู่มือ บอกว่า:

ก่อนหน้า PHP 5.2.1 เพื่อที่จะใช้คำสั่งนี้ จะต้องเปิดใช้งานในขณะคอมไพล์โดยใช้ --enable-memory-limit ในบรรทัดกำหนดค่า

นั่นอาจเป็นสาเหตุของปัญหาของคุณ

person JB Nizet    schedule 02.05.2011
comment
เราใช้: PHP เวอร์ชัน 5.2.6-1+lenny9 น่าเสียดายที่ไม่ใช่ปัญหา =( - person Thomas Bonini; 02.05.2011