2012-01-15 12 views
1

私はimagettftext()関数を使ってカスタムキャプチャスクリプトを作成しています。imagettftext() - フォント位置が見つかりません

PHP(バージョン5.3.8)を実行している私のPCでコードを正常に実行してテストしましたが、PHP(バージョン5.2.17)を実行している共有ホスティングアカウントにアップロードすると、次のエラーが表示されます

Warning: imagettftext() [function.imagettftext]: Could not find/open font in /home/pheelco/public_html/captcha.php on line 17 

これは17行目です。

imagettftext($img, 25, 0, 0, 25, $text, "fonts/alger.ttf", $num); 

私は間違いなくそのフォントでアップロードされた "font"というフォルダをpublic_htmlフォルダに持っています。

アイデア?

注:共有ホスティングアカウントを使用しているため、PHP設定を変更することはできません。

答えて

0

解決済み。ファイル名は "alger.TTF"で、ファイル拡張子は大文字で、私のコードでは小文字の拡張子を付けていました。なんらかの理由でこれはPHP 5.3.8ではまだ動作していましたが、PHP 5.2.17ではこれが役に立たなかったと思います。

3

imagettftextドキュメントは言う:

fontfile

使用するTrueTypeフォントのパス。 fontfileがリード/その後の.ttfが に追加されますファイル名で始まっていないと、ライブラリは、ライブラリに沿ってそのファイル名 を検索しようとするときにGDライブラリPHPのバージョンによって

は、使用しています定義済みのフォントパス。

2.0.18より小さいバージョンのGDライブラリを使用している場合、セミコロンではなく 文字のスペースが、異なるフォントファイルの 'パス区切り'として使用されました 。この機能を意図せずに使用すると、 という警告メッセージが表示されます。警告:フォントが見つかりませんでした。これらの影響を受けるバージョン の場合、唯一の解決方法は、スペースを含まない パスにフォントを移動することです。

フォントがスクリプト と同じディレクトリに存在する多くの場合、次のようなトリックはインクルードの問題を緩和します。

<?php // Set the enviroment variable for GD 
putenv('GDFONTPATH=' . realpath('.')); 

// Name the font to be used (note the lack of the .ttf extension) 
$font = 'SomeFont'; ?> 

あなたはこれを試してみましたか? gd_infoを使用して、使用しているGDのバージョンを確認できます。

+0

これはサブディレクトリにあります。 –

+0

@MichaelRuta: 'putenv( 'GDFONTPATH ='。realpath( '。')。 '/ fonts')' – Jon

+0

解決済みです。 ファイル名は "alger.TTF"で、ファイル拡張子は大文字で、私のコードでは小文字の拡張子を付けていました。 何らかの理由で、これはPHP 5.3.8ではなくPHP 5.2.17ではまだ機能していました。 この問題に遭遇した他の人に役立つことを願っています。 –

関連する問題