ฉันจะเพิ่ม commandline memory_limit สำหรับ PHP ด้วย MAMP PRO ได้อย่างไร


13

ฉันได้ทำการแก้ไขทุก ๆ ครั้งphp.iniบน Mac ของฉัน (อย่างน้อยก็ทุกอย่างที่พบโดย "ค้นหา") และดูเหมือนว่าจะไม่สามารถเพิ่มmemory_limitคำสั่งสำหรับ PHP ได้

ฉันใช้ MAMP PRO และใช้งานสคริปต์ PHP ในเทอร์มินัล

วิธีแก้ปัญหานี้

คำตอบ:


15

แทนที่จะคาดเดาว่าคุณต้องการแก้ไข php.ini ใดให้เรียกใช้คำสั่งนี้เพื่อค้นหาไฟล์:

php -r 'phpinfo();' | grep 'php.ini'

แม้ว่าฉันจะใช้ MAMP PRO แต่โดยปกติแล้วคำสั่ง PHP ของบรรทัดคำสั่งของฉันจะไม่ได้รับการดำเนินการโดยใช้สำเนา PHP ในกรณีของฉันมันบอกว่าไฟล์สามารถพบได้ที่/etc/php.ini

เมื่อคุณพบไฟล์ทำตามคำแนะนำในคำตอบอื่น ๆ ทั้งหมดเพื่อชนการตั้งค่า memory_limit:

memory_limit = 256M

1
ฉันต้องกำปั้น cp ไฟล์เริ่มต้น:cp /etc/php.ini.default /etc/php.ini
deweydb

4

จาก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


ไม่เป็นไรขีด จำกัด เหล่านั้นมีอยู่ที่ 128MB แล้ว ...
อเล็กซ์เวเบอร์

อืมม คุณมีมืออาชีพ ... ลองแก้ไขเทมเพลตแทน เห็นได้ชัดว่าไฟล์ php.ini ได้รับการสร้างขึ้นใหม่ทุกครั้ง คำแนะนำได้ที่นี่: document.mamp.info/th/mamp-pro/how-tos/… นั่นใช้ได้ไหม? คุณกำลังทำงานอะไรบนเซิร์ฟเวอร์ mamp
dmg

ยังคงไม่มีอะไรทุกไฟล์ php.ini เดียวที่ฉันสามารถหา (และเทมเพลตด้วย) มีทั้งหมดด้วย 128MB แต่ php -r "phpinfo ();" | grep memory_limit ยังคงส่งคืน memory_limit => 8M => 8M
Alex Weber

2

สำหรับฉันฉันทำต่อไปนี้:

แก้ไข /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 ของคุณ


สิ่งที่ง่ายที่สุดไม่มีใครสังเกต! ขอบคุณสำหรับความคิดนี้!
เคลลี่จอห์นสัน

1

หลังจากล้อเล่นไปซักพักก็พบบางอย่างที่เหมาะกับฉัน:

# 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

มี!


1

วิธีที่รวดเร็วและสกปรกในการทำเช่นนี้คือตั้งเป็นอาร์กิวเมนต์เมื่อเรียกใช้สคริปต์ของคุณ

เช่น:

php -d memory_limit=512M myScript.php 


0

หากคุณเปิด Opcache ใน Mamp Pro คุณจะไม่ได้รับการตั้งค่าที่เหมาะสม ... หยุดมันให้รีสตาร์ทเซิร์ฟเวอร์ Mamp Pro ของคุณ ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.