PHP GD generated image ไม่สามารถแสดงภาพได้เนื่องจากมีข้อผิดพลาดใน Firefox

PHP GD generated image ไม่สามารถแสดงภาพได้เนื่องจากมีข้อผิดพลาดใน Firefox

เมื่อสร้างภาพด้วย PHP ตัวอย่างเช่นการเพิ่มลายน้ำลงในภาพที่เก็บไว้ในเซิร์ฟเวอร์โดยใช้รหัสด้านล่างหรือรูปคล้ายกันกับ JPEG แทน PNG ภาพอาจไม่สามารถสร้างขึ้นได้ทั้งหมดและทำให้เกิดข้อผิดพลาดได้โดยตรงใน Firefox แต่ไม่พบ บน Chrome

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

ปัญหาอาจมาจากหลายสาเหตุนี่คือบางส่วนของพวกเขา:

มีการตั้งค่าเอาท์พุทไว้ก่อนหน้านี้แล้ว

ข้อผิดพลาดของแท้จากการสร้างภาพ

ใช้ประเภทของภาพที่ไม่ถูกต้อง

ไม่ได้ติดตั้งไลบรารีรูปภาพ

$stamp = imagecreatefrompng('watermark.png');
if(!$im = imagecreatefrompng('image.png')) die('Error generating image');
$marge_right = $marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$copyimage = imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
if(!imagedestroy($im)) die('Error generating image');
if(!imagedestroy($stamp)) die('Error generating image');

มีการตั้งค่าเอาท์พุทไว้ก่อนหน้านี้แล้ว

แม้ว่าจะไม่ได้มีเจตนาอาจเป็นเช่นนั้นตัวอย่างเช่นสคริปต์อื่น ๆ ก่อนหน้านี้มีช่องว่างอยู่ที่ท้าย - เพื่อหลีกเลี่ยงข้อผิดพลาดนี้โปรดตรวจสอบว่า PHP แนะนำไม่ให้ปิดสคริปต์ด้วยแท็กสิ้นสุดของ PHP?>

จากนั้นก่อนที่จะใช้ฟังก์ชันส่วนหัวให้ใช้รหัสต่อไปนี้เพื่อให้แน่ใจว่าส่วนหัวที่ตั้งไว้ก่อนหน้านี้ถูกยกเลิก

foreach (getallheaders() as $name => $value) {
header_remove($name);
}

นอกจากนี้ยังมีฟังก์ชั่นนี้เพื่อให้มั่นใจว่าไม่มีการสร้างเอาท์พุทก่อนส่วนหัวและภาพ

ob_end_clean();

วิธีแก้ปัญหานี้ในกรณีของฉันและภาพถูกแสดงอย่างถูกต้องอีกครั้ง

ข้อผิดพลาดของแท้จากการสร้างภาพ

ในกรณีที่มีข้อผิดพลาดเกิดขึ้นจริงระหว่างการสร้างภาพโปรดตรวจสอบว่า PHP มีการตั้งค่าให้แสดงข้อผิดพลาดที่เป็นไปได้ทั้งหมดและตรวจสอบบันทึกที่สอดคล้องกันเพื่อที่จะสามารถติดตามและแก้ปัญหาได้

รหัสต่อไปนี้จะทำให้ PHP รายงานข้อผิดพลาดทั้งหมดในบันทึก:

error_reporting(E_ALL);
ini_set('display_errors', '1');

จากนั้นคุณอาจพบว่ามีข้อผิดพลาดบางอย่างเกิดขึ้นแม้ว่าจะไม่ปรากฏใน html ที่เป็นผลลัพธ์เนื่องจากการกำหนดค่าเซิร์ฟเวอร์

ใช้ประเภทของภาพที่ไม่ถูกต้อง

ตรวจสอบว่าประเภทรูปภาพที่คุณใช้นั้นถูกต้องเช่นใช้รหัสนี้เพื่อแยกแยะระหว่าง png และ jpeg

ตรวจสอบให้แน่ใจว่าส่วนหัวถูกต้องตามเอาต์พุตที่ใช้ขึ้นอยู่กับฟังก์ชันการสร้างภาพที่ใช้

//to generate png image
header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
//to generate jpeg image
header('Content-type: image/jpeg');
if(!imagejpeg($im)) die('Error generating image');

ไม่ได้ติดตั้งไลบรารีรูปภาพ

เพื่อให้แน่ใจว่ามีการติดตั้งไลบรารีรูปภาพไว้ เมื่อต้องการดำเนินการดังกล่าวให้เรียกใช้ฟังก์ชัน phpinfo (); ในสคริปต์และตรวจสอบผลลัพธ์สำหรับค่าต่อไปนี้ที่เกี่ยวข้องกับ PHP GD ไลบรารีกราฟิกที่ใช้โดยฟังก์ชันเช่น imagepng ();

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

จะทำอย่างไรเมื่อ imagejpeg หรือ imagepng ไม่ทำงาน

ใน NotePad ++ ให้เปิดไฟล์ PHP ที่เรียกใช้ฟังก์ชั่น imagepng และบันทึกหลังจากไปที่เมนูการเข้ารหัส> แปลงเป็น UTF-8 โดยไม่มี BOM

ใน DreamWeaver ไปที่หน้าคุณสมบัติ> ชื่อ / การเข้ารหัส> ยกเลิกการเลือก Include Unicode Signature (BOM)

เมื่อ PHP imagejpeg หรือ imagepng ไม่ทำงานเป็นไปได้ว่าไฟล์ PHP นั้นถูกเข้ารหัสด้วย BOM, Bill Of Material และข้อมูลเพิ่มเติมจะถูกส่งไปพร้อมกับรูปภาพก่อนข้อมูลรูปภาพ

ฟังก์ชั่น PHP imagejpeg และ PHP imagepng เป็นฟังก์ชั่นที่ใช้ในการส่งรหัสรูปภาพโดยตรงในการตอบกลับของเซิร์ฟเวอร์

PHP - imagepng ทำงานไม่ถูกต้อง
PHP - ฟังก์ชั่น imagepng
PHP - ฟังก์ชั่น imagejpeg

อ่านเพิ่มเติม

แกลเลอรี่ภาพ

PHP GD generated image ไม่สามารถแสดงภาพได้เนื่องจากมีข้อผิดพลาดใน Firefox : ข้อผิดพลาดรูปภาพไม่สามารถแสดงได้เนื่องจากมีข้อผิดพลาดใน Firefox
PHP GD generated image ไม่สามารถแสดงภาพได้เนื่องจากมีข้อผิดพลาดใน Firefox : สร้างภาพแบบไดนามิกโดยใช้ PHP
PHP GD generated image ไม่สามารถแสดงภาพได้เนื่องจากมีข้อผิดพลาดใน Firefox : รายละเอียดแพคเกจ PHP GD โดยใช้ฟังก์ชัน phpinfo ()

บทความที่คล้ายกัน

ความคิดเห็น (6)

Irvin Vasquez, 2018-08-19
Simple, clear and well explained, many thanks
Joyce Lawrence, 2018-08-19
ありがとう、非常に有益な
Catherine Roberts, 2018-08-19
Dokładnie tego, czego szukałem, idealnie
Headlinext, 2018-08-19
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
Marshel, 2018-08-19
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
porcateraC, 2018-08-19
بالضبط ما كنت أبحث عنه ، مثالي

ทิ้งข้อความไว้