有一個老程式在搬家之後突然不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));
沒有留言:
張貼留言