หลังจากที่อัพ PHP เป็น version 5.4 ทำให้พบปัญหา Error มากมายอย่างไม่หยุดหย่อน ล่าสุดพบว่าฟังชั่น imagejpeg() มันไม่แสดงรูป
ก็ลองไปเช็กค่า GD ว่าเปิดอยู่หรือป่าว ก็เปิดตามปกติ
; Windows Extensions ; Note that ODBC support is built in, so no dll is needed for it. ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) ; extension folders as well as the separate PECL DLL download (PHP 5). ; Be sure to appropriately set the extension_dir directive. extension=php_bz2.dll extension=php_curl.dll extension=php_mbstring.dll extension=php_exif.dll ;extension=php_fileinfo.dll extension=php_gd2.dll extension=php_gettext.dll ;extension=php_gmp.dll
ลองเข้า phpinfo() GD ก็ทำงานปกติ
ลอง fix error notice แล้ว รูปก็ยังไม่ขึ้น
วิธีแก้ไข PHP Notice: Undefined index, Notice: Undefined variable
จนพบปัญหาจุดใต้ตำตอของปัญหา นั่นก็เพราะว่า
การใช้ ‘ ‘ หรือ ” “ แทนค่า NULL ใน PHP 5.4.x นั้น มันให้ผลลัพท์ต่างกัน!!!
ต่างกันตรงที่ว่า ถ้าเราใช้เงื่อนไขแบบนี้
$text = ''; if(isset($text)) echo 'true'; else echo 'false';
ค่าที่ได้มันจะเป็น true ทันทีครับ
แต่หากเปลี่ยนเป็น
$text = NULL; if(isset($text)) echo 'true'; else echo 'false';
ค่าที่ได้จะเป็น false
เมื่อได้ความตามนั้น ก็เลยจัดแจงแก้ไขฟังชั่นตามนี้
imagejpeg($img,'',50);
แก้เป็น
imagejpeg($img,NULL,50);
เนื่องจากว่ามันพยายามมองหา path filename ที่เราระบุเอาไว้นั่นเอง ทำให้มันหาที่เก็บรูปไม่เจอ ดังนั่น ใครที่เคยใช้ ” หรือ “” แทนค่าว่าง หรือค่า NULL จนเคยชินนั้น ควรเปลี่ยนเสียแต่บัดนี้ครับ