2011-01-04 21 views
13

मैं यह देखने के लिए कैसे परीक्षण करूं कि PHP चलाने वाले सर्वर पर फ्रीटाइप एक्सटेंशन स्थापित है या नहीं?पता लगाएं कि सर्वर पर फ्रीटाइप PHP एक्सटेंशन स्थापित है

मैं अपनी साइट पर एक सरल कैप्चा सिस्टम बनाना चाहता था, इसलिए मैंने imagettftext() का उपयोग किया और यह ठीक काम किया। लेकिन क्या होगा यदि सर्वर में फ्रीटाइप लाइब्रेरी स्थापित नहीं है?

तो कोड के माध्यम से किसी भी तरह फ्रीटाइप लाइब्रेरी का पता लगाने का कोई तरीका है, और यदि यह मौजूद नहीं है, तो imagestring() जैसे कुछ पर वापस आना?

अगर मैं imagettftext() उपयोग नहीं कर सकते मैं विकल्पों को देखने के लिए imagestring अधिकतम आकार के रूप में बड़े फ़ॉन्ट पाठ आकर्षित करने के लिए हो सकता है के लिए कैप्चा की तरह कुछ के लिए अच्छा नहीं है।

+0

क्या ओएस सर्वर है की जरूरत है? –

उत्तर

12

उपयोग function_exists:

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

आशा है कि मदद करता है।

+2

+1 यह फ़्रीटिप स्थापित होने पर कोई चेक नहीं है, लेकिन एक फ़ंक्शन इमेजेटफटेक्स्ट उपलब्ध है या नहीं, लेकिन यह दिए गए संदर्भ – Thariama

+0

में काम करना चाहिए :) मैं बस इस व्यक्ति को सही दिशा में इंगित करने की उम्मीद कर रहा था। – Norm

+0

हां यह जीडी और फ्रीटाइप दोनों की जांच करता है। [imagettftext मैन्युअल पृष्ठ] (http://php.net/manual/en/function.imagettftext.php) –

1

एक पहले थोड़ा जटिल दृष्टिकोण:

कॉल php_info() और खोज/freetype

+0

यह जटिल हो सकता है, लेकिन यह काम करेगा (तो डाउनवोट क्यों?) – Thariama

+3

डाउनवोट मेरा नहीं था, लेकिन 1) यह काम करने के लिए प्रयास करेगा, 2) यह किसी भी अन्य समाधान की तुलना में अधिक भंगुर है (मान लीजिए कि भविष्य में 'php_info' परिवर्तनों का उत्पादन) और 3) यह अब तक का सबसे कम्प्यूटेशनल रूप से महंगा तरीका है। – Jon

+0

जो कि कुल मिलाकर सही है :) – Thariama

0

के लिए परिणाम पार्स function_exists() प्रयास करें, यानी

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

आप शायद विकल्प imagettftext करने के लिए पूछ सबसे अच्छा होगा एक अलग सवाल के रूप में।

17

इस अभ्यास में बेहतर से function_exists समाधान पहले से ही तैनात नहीं किया जाएगा, लेकिन जांच करने के लिए तकनीकी रूप से सही तरह से extension_loaded उपयोग करना है।

+0

जो एक्सटेंशन की जांच करने का सबसे आसान तरीका है! – Thariama

+1

@downvoter: मुझे यह जानना अच्छा लगेगा कि इस जवाब में क्या गलत है। धन्यवाद। – Jon

+0

आप 'gd' एक्सटेंशन की जांच कर सकते हैं, लेकिन आप 'freetype' की जांच नहीं कर सकते क्योंकि यह PHP एक्सटेंशन नहीं है (' php-m' का आउटपुट देखें)। 'freetype' संकलन समय के दौरान जीडी से जुड़ा हुआ है। –

4

मान लीजिए कि जीडी लाइब्रेरी स्थापित है, आप gd_info() फ़ंक्शन का उपयोग करके फ़्रीटाइप समर्थन का पता लगा सकते हैं।

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

आप की जाँच करने के जी.डी. पुस्तकालय पहले स्थापित किया गया है या नहीं, का उपयोग करें, extension_loaded('gd');