2011-01-04 7 views
13

PHPを実行するサーバにFreeType拡張機能がインストールされているかどうかをテストするにはどうすればよいですか?FreeType PHP拡張機能がサーバにインストールされているかどうかを検出します

私は自分のサイトでシンプルなCAPTCHAシステムを作りたかったので、imagettftext()を使いました。うまくいきました。しかし、サーバにFreeTypeライブラリがインストールされていないとどうなりますか?

コードでFreeTypeライブラリを検出する方法はありますか?存在しない場合は、imagestring()のようなものに戻ってください。

私がimagettftext()を使用できない場合は、大きいフォントのテキストを描画するための代替方法を調べなければならない場合があります。imagestringの最大サイズはCAPTCHAのようなものには適していません。

+0

を使用する必要がある場合は? –

答えて

12

使用function_exists

if (function_exists('imagettftext')) { 
    imagettftext(); 
} else { 
    // do other function 
} 

お役に立てば幸いです。

+2

+1これはfreetypeがインストールされているかどうかをチェックするのではなく、関数imagettftextが利用可能かどうかをチェックしますが、これは指定されたコンテキストで有効です。 – Thariama

+0

:)私はこの人を正しい方向に向けることを望んでいました。 – Norm

+0

はい、GDとFreeTypeの両方をチェックします。 [imagettftextマニュアルページ](http://php.net/manual/en/function.imagettftext.php) –

1

最初の多少複雑なアプローチ:

コールphp_info()および検索/ freetypeの

+0

これは複雑かもしれませんが、それはうまくいくでしょう(なぜdownvoteですか?) – Thariama

+3

Downvoteは私のものではありませんでした。 1)それが動作するように努力する、2)他のどの解決策よりも脆弱である(将来、 'php_info'の出力が変化すると仮定します)、3)計算コストが最も高い方法です。 – Jon

+0

それは完全に正しいです: – Thariama

0

のための結果を解析すなわち

if (!function_exists('imagettftext')) { 
    // No freetype library 
} 

あなたはおそらく最高imagettftextする選択肢を求めているはずだ、function_exists()をお試しください別の質問として。

17

これはすでに掲載function_existsソリューションよりも実際でほうがよいのではないでしょうが、チェックするための技術的に正しい方法はextension_loadedを使用することです。

+0

これは、エクステンションを確認する最も簡単な最も効果的な方法です! – Thariama

+1

@downvoter:私はこの答えで何が間違っているか聞いて欲しいです。ありがとう。 – Jon

+0

'gd'拡張子を確認することはできますが、PHP拡張子ではないので' freetype'を確認することはできません( 'php -m'の出力を参照)。 'freetype'はコンパイル時にgdにリンクされます。 –

4

GDライブラリがインストールされていると仮定すると、gd_info()機能を使用してFreetypeサポートを検出できます。

$gdinfo = gd_info(); 
if($gdinfo['FreeType Support']) echo 'FreeType Support Enabled'; 

あなたは、GDライブラリが最初にインストールされているかどうかをチェックするサーバであり、どのようなOS extension_loaded('gd');

関連する問題