ฉันได้ทำการแก้ไขทุก ๆ ครั้งphp.ini
บน Mac ของฉัน (อย่างน้อยก็ทุกอย่างที่พบโดย "ค้นหา") และดูเหมือนว่าจะไม่สามารถเพิ่มmemory_limit
คำสั่งสำหรับ PHP ได้
ฉันใช้ MAMP PRO และใช้งานสคริปต์ PHP ในเทอร์มินัล
วิธีแก้ปัญหานี้
ฉันได้ทำการแก้ไขทุก ๆ ครั้งphp.ini
บน Mac ของฉัน (อย่างน้อยก็ทุกอย่างที่พบโดย "ค้นหา") และดูเหมือนว่าจะไม่สามารถเพิ่มmemory_limit
คำสั่งสำหรับ PHP ได้
ฉันใช้ MAMP PRO และใช้งานสคริปต์ PHP ในเทอร์มินัล
วิธีแก้ปัญหานี้
คำตอบ:
แทนที่จะคาดเดาว่าคุณต้องการแก้ไข php.ini ใดให้เรียกใช้คำสั่งนี้เพื่อค้นหาไฟล์:
php -r 'phpinfo();' | grep 'php.ini'
แม้ว่าฉันจะใช้ MAMP PRO แต่โดยปกติแล้วคำสั่ง PHP ของบรรทัดคำสั่งของฉันจะไม่ได้รับการดำเนินการโดยใช้สำเนา PHP ในกรณีของฉันมันบอกว่าไฟล์สามารถพบได้ที่/etc/php.ini
เมื่อคุณพบไฟล์ทำตามคำแนะนำในคำตอบอื่น ๆ ทั้งหมดเพื่อชนการตั้งค่า memory_limit:
memory_limit = 256M
จากhttp://drupal.org/node/66187 (drupal อาจไม่ตรงกับความต้องการของคุณ แต่ไซต์ของพวกเขามีคำอธิบายที่ดี - ต้องการจัดหามาให้คุณและให้เครดิตแก่พวกเขา)
โดยค่าเริ่มต้น MAMP มีการ จำกัด หน่วยความจำที่สคริปต์สามารถใช้ตั้งค่าที่ 8MB ซึ่งเป็นค่าเริ่มต้นของ PHP ดูไฟล์ที่ php.ini แนะนำของ PHP โดยปกติขีด จำกัด หน่วยความจำนี้จะถูกตั้งไว้ที่ 128MB หากต้องการปรับจำนวนเงินนี้ให้เปิดไฟล์ php.ini ในโปรแกรมแก้ไขข้อความและเปลี่ยนบรรทัดต่อไปนี้ (ประมาณที่บรรทัดที่ 232):
memory_limit = 8M; จำนวนหน่วยความจำสูงสุดที่สคริปต์อาจใช้ (8MB)
ตำแหน่งไฟล์ PHP.ini:
/Applications/MAMP/conf/php4/php.ini
/Applications/MAMP/conf/php5/php.ini
ใน MAMP PRO ไม่ต้องแก้ไขไฟล์โดยตรงเพราะมันจะถูกสร้างขึ้นใหม่ในแต่ละเซิร์ฟเวอร์เริ่มต้น โปรดแก้ไขเทมเพลตที่เหมาะสม (เมนูไฟล์> แก้ไขเทมเพลต> ... ) แทน
แม้จะมีขีด จำกัด ของหน่วยความจำ PHP ขนาดใหญ่คุณสามารถรับข้อผิดพลาดการหมดเวลาพยายามนำเข้าฐานข้อมูล Drupal ขนาดใหญ่ลงใน MySQL ปัญหาเหล่านี้จะถูกกล่าวถึงในที่อื่น ๆ ที่เกี่ยวข้องกับแคชและมุมมองแคช โดยทั่วไปการแก้ปัญหาคือการล้างแคช Drupal ก่อนที่จะนำเข้า / ส่งออกฐานข้อมูลไปยัง / จาก MySQL
สำหรับฉันฉันทำต่อไปนี้:
แก้ไข /Applications/MAMP/conf/php5.4.4/php.ini
และ
php.ini.temp
เป็น:
memory_limit = 128M ; Maximum amount of memory a script may consume (8MB)
จากนั้นในตัวค้นหาทำให้ php.ini และ php.ini.temp อ่านได้สำหรับผู้ใช้ทั้งหมดเท่านั้น ด้วยวิธีนี้ MAMP ไม่สามารถเขียนทับด้วยไฟล์เริ่มต้นได้ รีสตาร์ทเซิร์ฟเวอร์และตรวจสอบ phpinfo ของคุณ
หลังจากล้อเล่นไปซักพักก็พบบางอย่างที่เหมาะกับฉัน:
# backup original php.ini
sudo mv /usr/bin/php /usr/bin/php.bkp
# create a symlink from MAMP's php.ini in /usr/bin directory
# (I use 5.2, change the path for 5.3)
sudo ln -s /Applications/MAMP/bin/php/php5.2.17/bin/php /usr/bin/php
มี!
วิธีที่รวดเร็วและสกปรกในการทำเช่นนี้คือตั้งเป็นอาร์กิวเมนต์เมื่อเรียกใช้สคริปต์ของคุณ
เช่น:
php -d memory_limit=512M myScript.php
หากคุณใช้Homebrewการตั้งค่า php ของคุณอยู่ที่/usr/local/etc/php/<php version>
หากคุณเปิด Opcache ใน Mamp Pro คุณจะไม่ได้รับการตั้งค่าที่เหมาะสม ... หยุดมันให้รีสตาร์ทเซิร์ฟเวอร์ Mamp Pro ของคุณ ...
cp /etc/php.ini.default /etc/php.ini