close
今天發現 PHP8 裡有支程式執行時會出現以下錯誤訊息:
Fatal error: Uncaught Error: Call to undefined function ImageCreateFromJPEG()
我們要使用處理圖檔 (Image Processing and Generation) 的內建函式庫 GD,但這支程式在 PHP7 時期是會跑得好好的,上網搜尋了一下,找到兩篇文章:
- Undefined function imagecreatefromjpeg in php8 with gd installed
這篇提到如果要執行 ImageCreateFromJPEG(),需要在 php.ini 把 "extension=gd" 前面的註解拿掉。
- PHP 8.0: GD Extension: Windows DLL file name changed from php_gd2.dll to php_gd.dll
這篇提到,如果在 php.ini 裡嘗試要使用 "gd2",PHP log 裡會出現警告:
Warning: PHP Startup: Unable to load dynamic library 'gd2' (tried: .../ext\gd2 (The specified module could not be found.), .../ext\php_gd2.dll (The specified module could not be found.)) in Unknown on line 0
- Call To Undefined Function Imagecreatefromjpeg()
這篇提到 PHP8 的 extension 裡,以前用來處理圖片的 "GD2" 已經變成 "GD",
在 PHP8 之前的版本(例如 PHP7),要使用 GD 相關函數,要在 php.ini 裡設定:
extension=php_gd2.dll
在 PHP8 裡要使用 GD 相關函數,要在 php.ini 裡設定:
extension=php_gd.dll
看起來我這次做錯的設定是,我在升級到 PHP8 時,除了試著在 php.ini 裡加上了 "extentions=php_gd2.dll" 後,又把以前在 PHP7 的 ext 目錄裡的 php_gd2.dll 複製到 PHP8 的 ext 目錄裡。
總之,後來我把 php.ini 內容裡呼叫 GD 的段落,改成 extension=php_gd.dll 就好了。
文章標籤
全站熱搜