2019年4月17日 星期三

Could not find/open font (PHP GD不出圖的處理方式)

有一個老程式在搬家之後突然不work了,看了一下可以出圖但不能出字。

本來以為是新的代管主機不能上網抓google cvs的關係。但看了一下並不是。

由於代管主機不能ssh查修。先把系統移回自己的主機試一下。

在查修的時候需要開log。
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
把所有log都打開。


接著執行程式就看到以下的訊息

PHP Warning:  imagettfbbox(): Could not find/open font in /home/klting/MakeGif.php on line 250
PHP Warning:  imagettftext(): Could not find/open font in /home/klting/MakeGif.php on line 165


拿這個訊息去餵狗 ,大概知道是GD對於目錄定義的問題(我猜想是為了安全性)。

只要在呼叫imagettfbbox或imagettftext之前

先做以下設定:

putenv('GDFONTPATH=' . realpath('.'));

讓GD知道要去哪邊找字型檔就好了。


但我會建議以下做法,原因很簡單,通常代管主機的路徑很複雜。所以讓GD知道實體目錄在哪比較方便。

事實上我用上面的做法是失敗的。但用我的作法就成功了。(為了驗證這個我還多花了30分鐘)

$PATH = dirname(__FILE__);

putenv('GDFONTPATH=' . realpath($PATH));

沒有留言:

張貼留言