ผลลัพธ์ที่คุณต้องการไม่ใช่เพียงแค่ “คำเตือนหายไป”การแก้ไขที่ถูกต้องหมายความว่ากระบวนการ PHP ที่ให้บริการ ownCloud 10 นั้นรายงานขีดจำกัดหน่วยความจำอย่างน้อย 512 MB คำเตือนของผู้ดูแลระบบ ownCloud หายไป งานที่กำหนดเวลาไว้หรืองานที่เรียกใช้ผ่าน CLI ก็ใช้ขีดจำกัดที่เหมาะสมเช่นกัน และโฮสต์ยังมีหน่วยความจำทางกายภาพเพียงพอที่จะเรียกใช้ PHP เว็บเซิร์ฟเวอร์ ฐานข้อมูล และงานเบื้องหลังโดยไม่ต้องมีการสลับหน่วยความจำมากเกินไป
สำหรับ ownCloud Classic 10.16 สภาพแวดล้อม Docker อย่างเป็นทางการOWNCLOUD_MEMORY_LIMIT=512Mแนะนำให้ใช้ค่าเริ่มต้นดังกล่าว เอกสารของ ownCloud ยังแยกความแตกต่างระหว่างการกำหนดค่า PHP ที่ใช้โดยเว็บเซิร์ฟเวอร์กับที่ใช้โดยphp-cliความแตกต่างนี้เป็นสาเหตุหลักที่บางครั้งผู้ดูแลระบบเปลี่ยนmemory_limitรีสตาร์ทบริการ และยังคงเห็นคำเตือนเดิมอยู่
คู่มือนี้เริ่มต้นด้วยการตรวจสอบที่ก่อให้เกิดผลกระทบน้อยที่สุด จากนั้นแสดงเส้นทางของ Apache, PHP-FPM, CLI และ Docker นอกจากนี้ยังอธิบายว่าเมื่อใดควรเพิ่มขีดจำกัดให้สูงขึ้น และเมื่อใดที่ปัญหาที่แท้จริงคือ RAM ของโฮสต์ไม่เพียงพอมากกว่าการตั้งค่า PHP เอง
ความสำเร็จมีหน้าตาอย่างไร
| ตรวจสอบ | ผลลัพธ์ที่ดี | หากล้มเหลว |
| ภาพรวมผู้ดูแลระบบ ownCloud | ไม่มีคำเตือน “ขีดจำกัดหน่วยความจำ PHP ต่ำกว่าค่าที่แนะนำ” | คุณอาจแก้ไขการตั้งค่า PHP ผิด หรือไม่ได้รีสตาร์ทบริการที่ถูกต้อง |
| เว็บ PHP รันไทม์ | memory_limitแสดงค่า 512M หรือสูงกว่า | ค้นหาไฟล์การกำหนดค่าที่โหลดแล้วซึ่งใช้โดยคำขอเว็บ |
| CLI / รันไทม์ cron | php -r 'echo ini_get("memory_limit");'แสดงถึงค่าที่ตั้งใจไว้ | แก้ไขส่วนที่เกี่ยวข้องกับ CLI php.iniด้วยเช่นกัน |
| หน่วยความจำโฮสต์ | มี RAM เพียงพอ หรือมีแรงกดดันในการสลับข้อมูลน้อยมากหรือไม่มีเลย | อย่าเพิ่มขีดจำกัด PHP อย่างไม่ระมัดระวัง ตรวจสอบจำนวนเวิร์กเกอร์ PHP หรือขนาดของโฮสต์อีกครั้ง |
| บันทึก | ไม่มีข้อผิดพลาด “หน่วยความจำที่อนุญาตเต็มแล้ว” เกิดขึ้นซ้ำอีก | ตรวจสอบภาระงานที่ใช้หน่วยความจำมากก่อนที่จะเพิ่มขีดจำกัดอีกครั้ง |
1. ยืนยันคำเตือนและค่าที่ ownCloud ตรวจพบ
เริ่มต้นจากค่าที่ ownCloud สามารถมองเห็นได้เอง ขีดจำกัด web-runtime ที่ 128 MB หรือ 256 MB นั้นต่ำกว่าค่า 512 MB ที่ ownCloud แนะนำสำหรับการกำหนดค่า Docker
เปิดการตั้งค่าการดูแลระบบ ownCloud และสังเกตคำเตือนเกี่ยวกับข้อจำกัดด้านหน่วยความจำ ก่อนที่จะเปลี่ยนแปลงอะไร ให้จดบันทึกเวอร์ชัน ownCloud เวอร์ชัน PHP ประเภทเว็บเซิร์ฟเวอร์ และข้อจำกัดด้านหน่วยความจำปัจจุบันไว้ก่อน นี่จะเป็นข้อมูลพื้นฐานและช่วยป้องกันการเปลี่ยนแปลงการติดตั้ง PHP ผิดเวอร์ชันในระบบที่มี PHP หลายเวอร์ชัน
เอกสารประกอบการใช้งาน ownCloud เวอร์ชัน 10.16 ปัจจุบันระบุว่า ความต้องการของเซิร์ฟเวอร์ขึ้นอยู่กับจำนวนผู้ใช้ จำนวนไฟล์ และกิจกรรมเป็นอย่างมาก การกำหนดค่า Docker ของ ownCloud OWNCLOUD_MEMORY_LIMIT=512Mแนะนำให้ใช้ค่าเริ่มต้นนี้ ดังนั้น 512 MB จึงเป็นค่าพื้นฐานที่เหมาะสมสำหรับการแก้ไขคำเตือน ไม่ใช่การรับประกันว่าทุกปริมาณงานจะสามารถใช้งานได้ภายใน 512 MB
เอกสารอ้างอิงอย่างเป็นทางการ: คำแนะนำในการติดตั้งใช้งาน ownCloudและตัวแปรสภาพแวดล้อม Docker ของ ownCloud
2. อย่าเชื่อถือค่าที่แสดงในบรรทัดคำสั่ง (CLI) ว่าเป็นตัวแทนของเว็บเซิร์ฟเวอร์

php --iniรายงานนี้แสดงการตั้งค่าสำหรับ PHP CLI ซึ่งอาจแตกต่างจากการตั้งค่า PHP ที่ Apache หรือ PHP-FPM ใช้ในการให้บริการ ownCloud
เรียกใช้คำสั่งเหล่านี้เพื่อดูว่ากระบวนการ PHP ในบรรทัดคำสั่งใช้อะไรบ้าง:
php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'
สิ่งนี้มีประโยชน์สำหรับoccงาน Cron แต่ไม่ใช่หลักฐานยืนยันว่าคำขอเว็บใช้อะไร ownCloud ได้ระบุเส้นทางการกำหนดค่าแยกต่างหากไว้อย่างชัดเจน เช่น:
/etc/php/<version>/apache2/php.ini
/etc/php/<version>/fpm/php.ini
/etc/php/<version>/cli/php.ini
หาก CLI ของคุณแสดงค่า 512M ในขณะที่หน้าผู้ดูแลระบบยังคงแสดงข้อผิดพลาด ความไม่ตรงกันนี้เป็นสัญญาณที่ชัดเจนว่าเว็บเซิร์ฟเวอร์กำลังโหลดไฟล์อื่นphp.iniอยู่
โปรดดูหมายเหตุเกี่ยวกับการกำหนดค่า PHP ของ ownCloudซึ่งระบุไว้อย่างชัดเจนว่าอาจจำเป็นต้องเปลี่ยนแปลงการตั้งค่า PHP ในไฟล์ INI มากกว่าหนึ่งไฟล์
3. ค้นหาการตั้งค่า PHP ที่ใช้โดยคำขอเว็บ
เปรียบเทียบรันไทม์ PHP ในเบราว์เซอร์กับรันไทม์ CLI ไฟล์การกำหนดค่าที่โหลดในเบราว์เซอร์คือไฟล์ที่มีผลต่อคำเตือนบนเว็บ ownCloud
วิธีทดสอบที่น่าเชื่อถือที่สุดคือการตรวจสอบโค้ด PHP จากเว็บเซิร์ฟเวอร์เดียวกันกับที่ให้บริการ ownCloud เอกสารของ ownCloud อธิบายวิธีการใช้phpinfo.phpหน้าเว็บชั่วคราวไว้ดังนี้:
<?php phpinfo(); ?>
วางไฟล์นี้ไว้ในไดเร็กทอรีหลักของเว็บชั่วคราว เปิดในเบราว์เซอร์ และค้นหา:
- โหลดไฟล์การกำหนดค่าแล้ว
- ขีดจำกัดหน่วยความจำ
- API เซิร์ฟเวอร์
จากนั้นให้ลบไฟล์ phpinfo ทันที ownCloud เตือนว่าการปล่อยให้หน้า phpinfo สาธารณะอยู่นั้นจะทำให้ข้อมูลเซิร์ฟเวอร์ที่ละเอียดอ่อนรั่วไหลได้
หากเบราว์เซอร์แสดงข้อความ/etc/php/7.4/fpm/php.iniว่า ในขณะที่php --iniแสดงข้อความว่า/etc/php/7.4/cli/php.iniคุณก็รู้แล้วว่าเหตุใดการแก้ไขไฟล์ CLI จึงไม่ทำให้คำเตือนหายไป
4. PHP-FPM: เพิ่มขีดจำกัดของ web-runtime เป็น 512M
สำหรับการตั้งค่า Nginx หรือ Apache ที่ใช้ PHP-FPM ให้เปลี่ยน FPM php.iniหรือการตั้งค่า pool/site override ที่เกี่ยวข้อง ไม่ใช่แค่ไฟล์ CLI เท่านั้น
ในการติดตั้ง Debian หรือ Ubuntu ทั่วไป:
sudo nano /etc/php/7.4/fpm/php.ini
หา:
memory_limit = 128M
และเปลี่ยนเป็น:
memory_limit = 512M
ใช้เวอร์ชัน PHP ที่ติดตั้งไว้ใน PATH จากนั้นรีสตาร์ทบริการ FPM ที่ถูกต้องและเว็บเซิร์ฟเวอร์ของคุณหากจำเป็น:
sudo systemctl restart php7.4-fpm
sudo systemctl reload nginx
สำหรับ Apache ที่ใช้proxy_fcgiFPM หรือการตั้งค่า FPM อื่นๆ ให้รีสตาร์ท PHP-FPM แล้วโหลด Apache ใหม่แทน
ownCloud ยังระบุด้วยว่า PHP-FPM ไม่ใช้การตั้งค่า PHP จากไฟล์.htaccess.php หากคุณใช้การตั้งค่าแบบเฉพาะต่อไดเร็กทอรีกับ FPM ให้ใช้กลไกการกำหนดค่า PHP/FPM ที่รองรับสำหรับสภาพแวดล้อมของคุณ เช่นphp.iniการกำหนดค่าพูล หรือไฟล์.user.ini. php ที่เหมาะสม
5. Apache พร้อม mod_php: แก้ไขการตั้งค่า PHP ของ Apache
ใช้ Apache mod_php เพื่อแก้ไขการตั้งค่า PHP เฉพาะของ Apache แล้วรีสตาร์ท Apache เพื่อให้กระบวนการทำงานใหม่โหลดขีดจำกัดใหม่
หาก Apache โหลด PHP โดยตรงเป็นโมดูล ให้แก้ไขไฟล์เฉพาะของ Apache:
sudo nano /etc/php/7.4/apache2/php.ini
ชุด:
memory_limit = 512M
จากนั้นให้รีสตาร์ท Apache:
sudo systemctl restart apache2
อย่าคัดลอกหมายเลขเวอร์ชันโดยอัตโนมัติ ตรวจสอบเวอร์ชันที่ Apache โหลดจริง ระบบที่อัปเกรดผ่าน PHP หลายเวอร์ชันมักจะเก็บไดเร็กทอรีหลายแห่งไว้ภายใต้/etc/php/.
เกณฑ์การตัดสินนั้นง่ายมาก: หลังจากรีสตาร์ทแล้ว รันไทม์ PHP ที่แสดงผลบนเว็บต้องแสดงค่าใหม่ หากยังคงแสดง 128M แสดงว่ามีเลเยอร์การกำหนดค่าอื่นมาเขียนทับการแก้ไขของคุณ
6. อัปเดตขีดจำกัด CLI เมื่อ occ หรือ cron ใช้หน่วยความจำน้อยเกินไป
คำเตือนในส่วนผู้ดูแลระบบบนเว็บนั้นเกิดจากการทำงานของเว็บรันไทม์ แต่occการทำงานของ cron job นั้นใช้ PHP CLI เอกสารของ ownCloud ได้ระบุเรื่องนี้ไว้อย่างชัดเจน
แก้ไข:
sudo nano /etc/php/7.4/cli/php.ini
ชุด:
memory_limit = 512M
จากนั้นตรวจสอบ:
php -r 'echo ini_get("memory_limit"), PHP_EOL;'
คุณไม่จำเป็นต้องรีสตาร์ทบริการสำหรับ PHP CLI เพราะการเรียกใช้ CLI แต่ละครั้งจะเริ่มต้นกระบวนการใหม่ แต่ถ้างาน Cron ของคุณเรียกใช้ไบนารี PHP อื่นโดยเฉพาะ โปรดตรวจสอบไบนารีนั้นให้แน่ชัด แทนที่จะสันนิษฐานว่า/usr/bin/phpเป็นไบนารีที่ถูกใช้งานอยู่
ownCloud แนะนำให้ใช้งานoccในฐานะผู้ใช้ HTTP ซึ่งโดยทั่วไปจะใช้www-dataบน Debian/Ubuntu เอกสารอย่างเป็นทางการของ ownCloud เกี่ยวกับ occยังเตือนด้วยว่าoccควรใช้ PHP เวอร์ชันเดียวกันกับเว็บเซิร์ฟเวอร์เมื่อมีการติดตั้งหลายเวอร์ชัน
7. Docker: ให้ใช้ OWNCLOUD_MEMORY_LIMIT แทนการแก้ไขไฟล์ภายในคอนเทนเนอร์
สำหรับคอนเทนเนอร์ ownCloud อย่างเป็นทางการ ให้ตั้งค่าOWNCLOUD_MEMORY_LIMIT=512Mในสภาพแวดล้อมคอนเทนเนอร์และสร้างบริการใหม่เพื่อให้การกำหนดค่า PHP ที่สร้างขึ้นได้รับการอัปเดต
สำหรับอิมเมจ Docker อย่างเป็นทางการของ ownCloud ให้ใช้ตัวแปรสภาพแวดล้อมตามที่ระบุไว้ในเอกสาร:
environment:
OWNCLOUD_MEMORY_LIMIT: 512M
จากนั้นสร้างบริการขึ้นมาใหม่:
docker compose up -d
อย่าทำการแก้ไขหลักโดยการแก้ไขphp.iniภายในคอนเทนเนอร์ชั่วคราว การสร้างคอนเทนเนอร์ใหม่จะทำให้การเปลี่ยนแปลงเหล่านั้นหายไป เอกสารอย่างเป็นทางการของ ownCloud Docker environment ได้กำหนดOWNCLOUD_MEMORY_LIMIT=512Mและแนะนำให้คงค่าเริ่มต้นนั้นไว้
หากโฮสต์ Docker มีข้อจำกัดด้านหน่วยความจำที่เข้มงวด ควรตรวจสอบข้อจำกัดของคอนเทนเนอร์ด้วย:
docker stats
ข้อจำกัดของ PHP ที่ 512M ไม่ได้หมายความว่าคอนเทนเนอร์จะมีหน่วยความจำว่าง 512 MB โดยอัตโนมัติ แต่เป็นเพียงการจำกัดปริมาณหน่วยความจำที่คำขอ PHP แต่ละรายการสามารถใช้ได้เท่านั้น คอนเทนเนอร์และโฮสต์ยังคงต้องการหน่วยความจำที่เพียงพอสำหรับ PHP ที่ทำงานพร้อมกันทั้งหมดและบริการอื่นๆ ด้วย
8. เริ่มบริการที่ถูกต้องอีกครั้งและตรวจสอบจากรันไทม์เดียวกัน
การแก้ไขจะเสร็จสมบูรณ์ก็ต่อเมื่อเว็บรันไทม์รายงานว่ามีหน่วยความจำ 512M ขึ้นไป และ ownCloud ไม่แสดงคำเตือนหน่วยความจำเหลือน้อยอีกต่อไป
หลังจากรีสตาร์ทบริการที่เกี่ยวข้องแล้ว ให้ตรวจสอบหน้า phpinfo ชั่วคราวหรือภาพรวมผู้ดูแลระบบ ownCloud อีกครั้ง จากนั้นลบหน้า phpinfo ออก
หากคุณได้แก้ไข PHP-FPM โปรดตรวจสอบ:
sudo systemctl status php7.4-fpm
sudo systemctl status nginx
หากคุณได้เปลี่ยน Apache แล้ว:
sudo systemctl status apache2
รีเฟรชหน้าผู้ดูแลระบบ ownCloud คำเตือนควรหายไปหาก ownCloud ทำงานด้วยขีดจำกัดที่คาดไว้เป็นอย่างน้อยแล้ว
9. ตรวจสอบ RAM ของโฮสต์ก่อนที่จะเพิ่มขีดจำกัด PHP เกิน 512M
หลังจากเพิ่มขีดจำกัดต่อคำขอแล้ว ให้ตรวจสอบหน่วยความจำระบบทั้งหมดและพฤติกรรมของ PHP worker ขีดจำกัด PHP ที่สูงขึ้นอาจทำให้การใช้ RAM ในกรณีที่เลวร้ายที่สุดเพิ่มขึ้นเมื่อมี worker จำนวนมากทำงานอยู่
วิ่ง:
free -h
ps aux | grep php-fpm
vmstat 1
PHP memory_limitกำหนดขีดจำกัดต่อสคริปต์ ไม่ใช่การสำรองหน่วยความจำ และไม่เหมือนกับปริมาณ RAM ที่เซิร์ฟเวอร์ต้องการ หากคุณมี PHP worker 20 ตัว และอนุญาตให้ทุกคำขอใช้หน่วยความจำจำนวนมาก ในกรณีที่เลวร้ายที่สุดตามทฤษฎีแล้ว หน่วยความจำที่ใช้ก็อาจเกิน RAM ของเครื่องไปมาก
เอกสารการปรับแต่งของ ownCloud ให้คำเตือนทั่วไปเดียวกันสำหรับกระบวนการเว็บเซิร์ฟเวอร์: กำหนดขนาดจำนวนกระบวนการเพื่อให้การใช้หน่วยความจำโดยรวมต่ำกว่า RAM ที่มีอยู่ มิฉะนั้นระบบจะเริ่มใช้หน่วยความจำเสมือน (swapping) และประสิทธิภาพจะลดลง ดูคำแนะนำการปรับแต่ง ownCloud Classicเพิ่มเติม
หากสัญญาณเตือน 512M หายไปแล้ว และการทำงานปกติเป็นไปอย่างราบรื่น ก็ไม่มีเหตุผลที่จะต้องเพิ่มขีดจำกัดเพียงเพื่อให้ตัวเลขใหญ่ขึ้น
10. เมื่อตั้งค่าเป็น 512M แล้วยังคงแสดงข้อความ “Allowed memory size exhausted”
การแจ้งเตือนคำแนะนำที่ถูกล้างแล้วและการเกิดข้อผิดพลาดเนื่องจากหน่วยความจำหมดเป็นปัญหาที่แตกต่างกัน หากบันทึกมีข้อความเช่น:
PHP Fatal error: Allowed memory size of ... bytes exhausted
ระบุการทำงานที่ทำให้เกิดการใช้งานหน่วยความจำดังกล่าว การสแกนขนาดใหญ่ งานเข้ารหัส การทำงานกับอุปกรณ์จัดเก็บข้อมูลภายนอก การประมวลผลภาพ หรือแอปพลิเคชันของบุคคลที่สาม อาจมีรูปแบบการใช้งานหน่วยความจำที่แตกต่างกันมาก
ตรวจสอบบันทึกของ ownCloud และบันทึกข้อผิดพลาดของ PHP/เว็บเซิร์ฟเวอร์ การติดตั้ง ownCloud มาตรฐานจะเขียนบันทึกของตัวเองไว้ในไดเร็กทอรีข้อมูลที่กำหนดค่าไว้ ซึ่งโดยทั่วไปคือdata/owncloud.logหลีกเลี่ยงการคิดว่า "เพิ่มเป็น 1G" เป็นขั้นตอนต่อไปโดยอัตโนมัติ ก่อนอื่นให้ตรวจสอบว่าการดำเนินการเดียวกันนั้นทำให้ถึงขีดจำกัดซ้ำๆ หรือไม่
หากงานบริหารจัดการงานใดงานหนึ่งต้องการหน่วยความจำเพิ่มอย่างถูกต้อง การกำหนดค่าผ่าน CLI แบบเจาะจงอาจปลอดภัยกว่าการกำหนดขีดจำกัดขนาดใหญ่ให้กับทุกคำขอเว็บทั่วโลก:
php -d memory_limit=1G occ <command>
ใช้คำสั่งนี้เฉพาะเมื่อเข้าใจพฤติกรรมของคำสั่งและหน่วยความจำแล้วเท่านั้น คำสั่งนี้ไม่สามารถแก้ไขปัญหาการร้องขอเว็บที่ทำงานผ่าน PHP-FPM หรือ Apache ได้
เหตุใดคำเตือนจึงยังคงปรากฏอยู่หลังจากแก้ไขไฟล์ php.ini แล้ว
| อาการ | สาเหตุที่เป็นไปได้ | ตรวจสอบครั้งต่อไป |
php -rแสดงค่า 512M แต่ ownCloud ยังคงแสดงค่า 128M | คุณเปลี่ยนเฉพาะ CLI PHP เท่านั้น | ตรวจสอบข้อมูล phpinfo ของเบราว์เซอร์และไฟล์การกำหนดค่าที่โหลดไว้ |
| ไฟล์ FPM ระบุว่า 512M แต่เบราว์เซอร์ยังแสดง 128M | Pool .user.iniหรือไฟล์ INI อื่นๆ จะเขียนทับค่านี้ | ตรวจสอบค่า "local" และ "master" ของ phpinfo และไฟล์ INI ที่ถูกแยกวิเคราะห์เพิ่มเติม |
| ค่าจะเปลี่ยนแปลงหลังจากรีบูตเท่านั้น | บริการที่ถูกต้องไม่ได้เริ่มต้นใหม่ | หลังจากแก้ไขเสร็จแล้ว ให้รีสตาร์ท PHP-FPM หรือ Apache อย่างชัดเจน |
| ค่า Docker จะกลับไปเป็นการตั้งค่าเดิมหลังจากสร้างใหม่ | คุณแก้ไขภายในคอนเทนเนอร์ | ตั้งค่าOWNCLOUD_MEMORY_LIMITใน Compose หรือสภาพแวดล้อมการปรับใช้ |
| คำเตือนหายไป แต่เซิร์ฟเวอร์เริ่มทำการสลับข้อมูล | การทำงานพร้อมกันของ PHP เกินขีดจำกัดหน่วยความจำของโฮสต์ | ลดจำนวนพนักงาน ปรับปรุงประสิทธิภาพการทำงาน หรือเพิ่ม RAM |
อย่าสับสนระหว่าง memory_limit กับ upload limits
memory_limitและแก้ไขปัญหาต่างๆ การเพิ่มหน่วยความจำ PHP ไม่ได้หมายความว่าผู้ใช้สามารถอัปโหลดไฟล์ขนาดใหญ่ขึ้นได้โดยอัตโนมัติ บันทึกการกำหนดค่า ownCloud 10.16 ระบุแยกต่างหากว่าupload_max_filesizeควรตั้งค่าอย่างน้อย 512 MB สำหรับค่าต่ำสุดที่ระบุไว้ และอธิบายว่าขีดจำกัดการอัปโหลดจำเป็นต้องมีการตั้งค่าเฉพาะของตนเองpost_max_sizepost_max_size
หากอาการที่เกิดขึ้นจริงคือ “การอัปโหลดไฟล์ขนาดใหญ่ล้มเหลว” ให้ตรวจสอบupload_max_filesizeขีดpost_max_sizeจำกัดขนาดไฟล์ของพร็อกซี/เว็บเซิร์ฟเวอร์, เวลาหมดอายุ และความจุของดิสก์ชั่วคราว อย่าใช้ค่าที่สูงกว่าmemory_limitมาทดแทนการควบคุมเหล่านั้น
รายการตรวจสอบขั้นสุดท้าย
- ตรวจสอบคำเตือนและค่าปัจจุบันใน ownCloud
- ตรวจสอบว่า ownCloud ใช้ Apache mod_php หรือ PHP-FPM
- ค้นหาไฟล์การกำหนดค่าที่โหลดแล้วของเว็บ รันไทม์
- ตั้งค่า PHP สำหรับเว็บ
memory_limitเป็นอย่างน้อย512M.
- อัปเดต CLI PHP ด้วย หาก
occcron ใช้ขีดจำกัดที่ต่ำกว่า
- สำหรับ Docker ให้ตั้งค่า
OWNCLOUD_MEMORY_LIMIT=512Mในสภาพแวดล้อมการปรับใช้
- รีสตาร์ทหรือสร้างบริการที่ให้บริการ PHP ขึ้นใหม่
- ตรวจสอบค่าจากสภาพแวดล้อมการทำงานของเว็บ ไม่ใช่แค่จากบรรทัดคำสั่ง (CLI) เท่านั้น
- ตรวจสอบว่าคำเตือนของ ownCloud หายไปแล้ว
- ตรวจสอบ RAM และ swap ของโฮสต์ก่อนที่จะเพิ่มขีดจำกัดเกิน 512M
สรุปแล้ว
วิธีแก้ไขปัญหา “PHP memory limit below recommended value” ใน ownCloud 10 อย่างได้ผล คือ การตั้งค่า PHP runtime ที่ให้บริการ ownCloud ให้ใช้หน่วยความจำอย่างน้อย 512 MB ขึ้นไป จากนั้นตรวจสอบผลลัพธ์จาก runtime เดียวกัน สาเหตุที่พบบ่อยที่สุดคือ การแก้ไขไฟล์การกำหนดค่า/etc/php/.../cli/php.iniขณะที่ ownCloud กำลังทำงานผ่าน PHP-FPM หรือ Apache โดยใช้ไฟล์การกำหนดค่าที่แตกต่างกัน
หยุดการทำงานเมื่อคำเตือนหายไป การทำงานตามปกติเป็นไปอย่างราบรื่น และโฮสต์มีหน่วยความจำเหลือเฟือ หาก PHP ยังคงใช้หน่วยความจำเกิน 512 MB ในระหว่างการทำงานเฉพาะอย่าง ให้เปลี่ยนจากการ "เพิ่มจำนวน" ไปเป็นการวิเคราะห์ภาระงาน: ตรวจสอบคำสั่งที่ล้มเหลว แอปพลิเคชัน บันทึก การทำงานพร้อมกัน และ RAM ทางกายภาพ การกำหนดขีดจำกัดที่มากขึ้นอาจเหมาะสม แต่เฉพาะเมื่อภาระงานนั้นสมเหตุสมผลและเซิร์ฟเวอร์สามารถรองรับได้อย่างปลอดภัย