วิธีการแก้ไขข้อผิดพลาด HTTP เมื่ออัพโหลดรูปภาพ?


28

ฉันใช้ WordPress 3.4.1 บน Ubuntu 12.04 โดยใช้ Apache และ PHP 5.3.X

เมื่อฉันเข้าสู่แผงควบคุมและเพิ่มโพสต์ใหม่ จากนั้นลองอัปโหลดภาพเพื่อตั้งเป็นภาพเด่นฉันได้รับกล่องสีแดงพร้อมข้อความ "ข้อผิดพลาด HTTP"

ฉันได้อ่านเกี่ยวกับคนที่บอกว่าไม่ได้ใช้ตัวอัปโหลดแฟลชและใช้ตัวอัปโหลดเบราว์เซอร์ แต่เมื่อฉันลองฉันจะได้รับ 500 Internal Server Error

ฉันได้ลองเพิ่มAddType x-mapp-php5 .phpที่ด้านบนของไฟล์. htaccess โดยไม่มีการเปลี่ยนแปลงใด ๆ

การปิดใช้งานปลั๊กอินทั้งหมดไม่มีผลใด ๆ ฉันลองติดตั้งใหม่ ไม่มีโชค.

อัปเดต 10/17/2016 - หากคุณกำลังใช้บทบาทหรือความสามารถที่กำหนดเองโปรดลองใช้บทบาท / ความสามารถดั้งเดิมแล้วลองอีกครั้ง

สิ่งที่ต้องพิจารณาในการตรวจสอบ:

  • การเป็นเจ้าของไฟล์
  • สิทธิ์ของไฟล์
  • .htaccess การกำหนดค่า
  • PHP เวอร์ชัน 7+
  • WordPress เวอร์ชั่นปัจจุบัน

หากคุณใช้งานพร็อกซีตรวจสอบให้แน่ใจว่าคุณกำหนดค่าการหมดเวลาของพร็อกซีเซิร์ฟเวอร์อย่างถูกต้อง

WordPress 3.4.1 ข้อผิดพลาด HTTP อัพโหลดสื่อ


เบื้องหลังเหตุผลคืออะไรAddType x-mapp-php5 .php? ดูเหมือนจะเป็นเซิร์ฟเวอร์ที่เฉพาะเจาะจงมาก ฉันคิดว่ามันมีแนวโน้มที่จะทำลายเว็บไซต์ของคุณ (เช่น. PHP) อย่างน่ากลัว (หรือไม่ทำอะไรเลยถ้าคุณโชคดี) แทนที่จะปรับปรุงอะไร?
MrWhite

คำตอบ:


25

ฉันใส่รหัสต่อไปนี้ลงในfunctions.phpไฟล์ของฉัน มันได้ผล!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

function change_graphic_lib($array) {
  return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

เมื่อสิ่งนี้ช่วยได้เพราะมันเปลี่ยนโมดูลโค้ด PHP ที่ใช้สำหรับการประมวลผลภาพที่อัพโหลดเพื่อใช้กับ WordPress

การประมวลผลนี้รวมถึงการย้ายภาพไปยังฐานข้อมูลไลบรารีสื่อและสร้างภาพขนาดแตกต่างกัน ("ภาพย่อ", "ขนาดกลาง", "ขนาดใหญ่") ที่ WordPress ต้องการให้มีรูปแบบให้เข้าถึงอยู่เสมอ

มันทำให้โมดูล "GD" ที่จะใช้เพราะมันเป็นครั้งแรก ในการตั้งค่าเซิร์ฟเวอร์บางรายการไลบรารี "Imagick" ที่ใหม่กว่าจะเล่นได้ไม่ดีกับผู้อื่นในบางสถานการณ์ของภาพเช่นขนาดพิกเซลที่มีขนาดใหญ่ดังนั้นการบังคับให้ใช้ไลบรารี "GD" เป็นวิธีแก้ไข


มันจะดีกว่าที่จะสร้างปลั๊กอินเล็กน้อยกว่าใส่ไว้ในfunctions.phpเพราะถ้าคุณเปลี่ยนธีมคุณจะสูญเสียรหัส และฉันแน่ใจว่าคุณต้องการให้สิ่งนี้ทำงานหลังจากเปลี่ยนธีม Eli
EliasNS

1
+1 สิ่งนี้ใช้ได้สำหรับฉันเมื่อพบปัญหานี้ด้วยการตั้งค่า WP 4.9.4 แบบนอกกรอบในบัญชี HostGator ใหม่ @EliasNS noob ที่นี่; วิธีที่เหมาะสมในการทำปลั๊กอินเล็กน้อยสำหรับสิ่งนี้คืออะไร
Andrew Janke

@AndrewJanke คุณสามารถใช้ปลั๊กอิน😅 es.wordpress.org/plugins/pluginception
EliasNS

"Imagick" ? ไม่ใช่"ImageMagick"หรือไม่
Peter Mortensen

21

หลังจากการแก้ไขปัญหาด้วย @Wyck ในการแชทเราได้ จำกัด ให้แคบลงถึงปัญหาพื้นฐาน

ปัญหาเกี่ยวข้องกับการกำหนดค่าเซิร์ฟเวอร์ของฉันไม่ได้จัดสรรหน่วยความจำใน Apache / PHP ในปริมาณที่เหมาะสม

หากใครมีปัญหาเดียวกันนี้โปรดลองตรวจสอบว่าคุณมีหน่วยความจำเซิร์ฟเวอร์ (64 MB +) เพียงพอที่จัดสรรให้กับ Apache / PHP ในการตั้งค่าเซิร์ฟเวอร์ของคุณ คุณยังสามารถเพิ่มสิ่งนี้ลงในไฟล์ wp-config.php ของคุณ:

define('WP_MEMORY_LIMIT', '64MB');

หากวิธีการข้างต้นไม่ทำงานให้อ่านบทความปัญหาเกี่ยวกับImage / Media Uploader? สำหรับการแก้ไขปัญหาเพิ่มเติม

ลองเพิ่ม. htaccess หนึ่งรายการต่อไปนี้เพื่อปรับแต่งไฟล์. htaccess ในไดเรกทอรีรากของการติดตั้ง WordPress ของคุณ

ลองใช้หนึ่งในวิธีแก้ปัญหาแต่ละข้อด้านล่างอย่างจริงจังเพื่อให้คุณรู้ว่าวิธีใดที่ทำไป อย่าวางทั้งหมดลงในไฟล์. htaccess ของคุณทันที

ลองบรรทัดนี้:

AddType x-mapp-php5 .php

mod_securityอาจทำให้เกิดปัญหา ปิดใช้งานเพื่อดูว่าเป็นปัญหาหรือไม่ เมื่อต้องการทำสิ่งนี้ให้สร้างไฟล์. htaccess ในไดเรกทอรี wp-admin ของคุณ เพิ่มไปยังมัน:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

หากคุณใช้การควบคุมการเข้าถึงตามการรับรองความถูกต้องบนเว็บเซิร์ฟเวอร์ของคุณ (มักรู้จักกันในชื่อ htpasswd, การพิสูจน์ตัวตนพื้นฐาน, ไดเรกทอรีป้องกันด้วยรหัสผ่านหรือคล้ายกัน) WordPress ไม่สามารถจัดการกับ Flash Uploader, Cron และ XMLRPC ไฟล์ที่เกี่ยวข้องจะต้องได้รับการยกเว้นในการทำงาน โปรดทราบว่าสิ่งนี้อาจทำให้การพิจารณาด้านความปลอดภัยของคุณเสียหาย

# Exclude the file upload and WordPress CRON scripts from authentication
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
</FilesMatch>

หมายเหตุสุดท้าย: บางคนบอกว่าถ้าใช้ PHP 5.3.X เวอร์ชันต่ำกว่าคุณสามารถลองปิดการใช้งาน Safe Mode ของ PHP ได้

หากคุณใช้ WordPress หลายเว็บไซต์และได้รับข้อผิดพลาด HTTP หรือข้อผิดพลาดเซิร์ฟเวอร์ภายในที่เกี่ยวข้องกับการอัปโหลดภาพโปรดอ่านการอัปโหลดรูปภาพไปยังเว็บไซต์หลายแห่งทำให้เกิดข้อผิดพลาด HTTP ไม่ได้ )สำหรับแนวคิดและแนวทางแก้ไขปัญหาอื่น ๆ


ตกลง ... ดีใจที่ได้ทราบ ... คุณอ่านหรือไม่ว่า WP พยายามจัดสรร RAM สูงสุด 256MB ดังนั้นจึงdefine('WP_MEMORY_LIMIT', '64MB');ควรใหญ่กว่านี้ถ้าเป็นไปได้
ดาเมียน

1
หากคุณใช้ WP 4.1.1 AddType x-mapp-php5 .phpนี่ไม่ใช่ทางออกที่เป็นไปได้อีกต่อไปเพราะมันบังคับให้หน้าพิมพ์รหัส PHP เป็นข้อความธรรมดา
cameronjonesweb

1
หรือเพิ่มลงในไฟล์ปรับแต่งเว็บไซต์ของคุณหากคุณใช้งาน nginx:client_max_body_size 128m;
Flatron

4

ฉันพบข้อผิดพลาดเดียวกันเมื่อพยายามอัปโหลดสื่อด้วย WordPress ใน Chrome จะแสดงเป็น http: error ใน Firefox ข้อผิดพลาดมีลักษณะแตกต่างกันมาก เว็บเป็นเรื่องราวที่เต็มไปด้วยผู้คนที่ใช้เวลาหลายวันในการไล่ล่าบั๊ก (ดังนั้นให้ฉัน :-() การแก้ปัญหามากมาย แต่ไม่มีใครอธิบายได้ว่าทำไมอย่างน้อยก็ไม่ได้อยู่ในแนวทางที่สอดคล้องกับอาการ

ความช่วยเหลือที่มีค่าของฉัน: ฉันสังเกตเห็นว่าปัญหามีความสัมพันธ์กับความผิดพลาดในการแบ่งส่วนสัญญาณในไฟล์บันทึกของ apache2 นั่นรบกวนฉันเพราะมันยากที่จะวินิจฉัย

การรีบูตเซิร์ฟเวอร์ทั้งหมดทำให้เกิดอาการทั้งหมดและในทันใดฉันสามารถอัพโหลดสื่อได้อีกครั้งใน Wordpress เฉื่อยชาฉันไม่มีเงื่อนงำว่าทำไมสิ่งนี้เกิดขึ้น การรีบูตทำให้ฉันหยุดการวิจัยเพิ่มเติมได้อย่างมีประสิทธิภาพและตอนนี้ฉันจะต้องรอ (สัปดาห์เดือน) เพื่อให้ปัญหาเกิดขึ้นอีกครั้ง ฉันหวังว่าสิ่งนี้จะช่วยผู้อื่นในการค้นหาสาเหตุของปัญหานี้ ภรรยาของฉันมีความสุข แต่เพราะฉันไม่สามารถใช้เวลาไล่ตามปัญหานี้ได้อีกต่อไป ...


1

ฉันได้รับการแก้ไขปัญหานี้โดยการเปลี่ยนเจ้าของของฉันจากrootไปapacheดังต่อไปนี้

chown -R apache:apache /var/www/html/mydomain

จากนั้นฉันได้เปลี่ยนการอนุญาตของwp-content/uploads/ไป775เป็น

หลังจากนั้นฉันพยายามอัพโหลดภาพในสื่อ ฉันอัปโหลดภาพได้สำเร็จ


0

ฉันมีปัญหาเดียวกัน ฉันลองแก้ไขต่าง ๆ รวมถึงการเปลี่ยนโปรเซสเซอร์รูปภาพเริ่มต้นจาก PHP GD เป็น ImageMagick โดยใช้ปลั๊กอินบังคับรูปภาพของ Magick

สิ่งนี้ช่วยในข้อผิดพลาด HTTP / ข้อผิดพลาด 500 แต่รูปขนาดย่อไม่ได้ถูกสร้างขึ้นอีกต่อไป จากนั้นผมก็ปิดการใช้งานปลั๊กอินอีกครั้งแล้วและสิ่งที่ช่วยให้ผมเป็นแบบนี้คำตอบกับคำถามดูเหมือนว่าการปรับขนาดภาพจะทำงานได้ไม่ดี ฉันPHP_MEMORY_LIMITถูกตั้งค่าเป็นค่า160MBสูงสุดที่ฉันอนุญาตให้ใช้อย่างแน่นอน

สำหรับการอัปโหลดรูปภาพสิ่งนี้จะทำให้ได้ขนาดภาพที่เป็นไปได้สูงสุด6000 x 6000 pxเมื่อใช้ PHP GD และสร้างภาพขนาดย่อ ดังนั้นสิ่งสำคัญคือไม่เพียง แต่ตรวจสอบขนาดไฟล์ แต่ยังรวมถึงขนาดของภาพด้วย การอัปโหลดรูปภาพที่มีขนาดที่สูงกว่าจะทำให้เกิดข้อผิดพลาด HTTP / ข้อผิดพลาด 500 ถึงแม้จะมีขนาดไฟล์เล็ก


0

ผมเคยประสบปัญหาดังกล่าวหลายครั้งและได้รับการแก้ไขโดยการเพิ่มmemory_limit = 256Mใน php.ini หรือเพิ่มdefine( 'WP_MEMORY_LIMIT', '256M' );ในwp-config.phpไฟล์ (* ถ้ามีความจำเป็นที่คุณสามารถเพิ่มหน่วยความจำมากกว่า256M) ส่วนใหญ่ของเวลา

อีกวิธีที่เป็นไปได้คือการให้สิทธิ์กับ\wp-content\uploads\โฟลเดอร์ chmod -R 0755 wp-content\uploads\คำสั่ง:

หวังว่ามันจะช่วยคุณได้เช่นกัน

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