2011-01-04 40 views
13

Làm cách nào để kiểm tra xem phần mở rộng FreeType có được cài đặt trên máy chủ chạy PHP không?Phát hiện nếu phần mở rộng FreeType PHP được cài đặt trên máy chủ

Tôi muốn tạo một hệ thống CAPTCHA đơn giản trên trang web của mình, vì vậy tôi đã sử dụng imagettftext() và nó hoạt động tốt. Nhưng nếu máy chủ không cài đặt thư viện FreeType thì sao?

Vì vậy, có cách nào đó bằng cách nào đó phát hiện thư viện FreeType thông qua mã và nếu không có, hãy quay trở lại thành một cái gì đó như imagestring()?

Nếu tôi không thể sử dụng imagettftext() Tôi có thể phải xem các lựa chọn thay thế để vẽ văn bản phông chữ lớn vì kích thước tối đa imagestring không tốt cho một cái gì đó như CAPTCHA.

+0

OS là gì máy chủ? –

Trả lời

12

Sử dụng function_exists:

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

Hy vọng rằng sẽ giúp.

+2

+1 điều này không kiểm tra nếu freetype được cài đặt, nhưng kiểm tra nếu một chức năng imagettftext có sẵn - nhưng điều này sẽ làm việc trong bối cảnh nhất định – Thariama

+0

:) Tôi đã chỉ hy vọng để trỏ người này theo một hướng đúng. – Norm

+0

Có nó kiểm tra cả GD và FreeType. [trang hướng dẫn sử dụng imagettftext] (http://php.net/manual/en/function.imagettftext.php) –

1

A đầu tiên tiếp cận hơi phức tạp:

gọi php_info() và tìm kiếm/phân tích các kết quả cho freetype

+0

điều này có thể phức tạp, nhưng nó sẽ hoạt động (vì vậy tại sao downvote?) – Thariama

+3

Downvote không phải của tôi, nhưng 1) nó sẽ mất công sức để làm cho nó hoạt động, 2) nó dễ vỡ hơn bất kỳ giải pháp nào khác (giả sử đầu ra của 'php_info' thay đổi trong tương lai) và 3) đó là cách tốn kém nhất về tính toán để thực hiện nó. – Jon

+0

hoàn toàn chính xác :) – Thariama

0

Hãy thử function_exists(), tức là

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

Bạn có thể muốn được tốt nhất yêu cầu thay thế cho imagettftext như một câu hỏi riêng.

17

này sẽ không được tốt hơn trong thực tế hơn function_exists giải pháp đã được đăng, nhưng cách đúng kỹ thuật để kiểm tra là bằng cách sử dụng extension_loaded.

+0

đó là cách hiệu quả nhất để kiểm tra tiện ích mở rộng! – Thariama

+1

@downvoter: Tôi rất thích nghe câu trả lời này có gì sai. Cảm ơn. – Jon

+0

Bạn có thể kiểm tra phần mở rộng 'gd', nhưng bạn không thể kiểm tra' freetype' đơn giản vì nó không phải là phần mở rộng của PHP (xem đầu ra của 'php -m'). 'freetype' chỉ được liên kết với gd trong thời gian biên dịch. –

4

Giả sử thư viện GD được cài đặt, bạn có thể phát hiện hỗ trợ Freetype bằng cách sử dụng chức năng gd_info().

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

Nếu bạn cần kiểm tra hay không thư viện GD được cài đặt đầu tiên, sử dụng extension_loaded('gd');

Các vấn đề liên quan