- PHP: Check if cURL is enabled.
- Does curl_init exist as a function?
- Get loaded extensions.
- Fallback.
- как проверить, включен ли curl
- 7 ответов
- curl_getinfo
- Примечания
- User Contributed Notes 13 notes
- Проверка поддержки cURL на вашем хостинге
- Re: Проверка поддержки cURL на вашем хостинге
- Re: Проверка поддержки cURL на вашем хостинге
- Re: Проверка поддержки cURL на вашем хостинге
- Re: Проверка поддержки cURL на вашем хостинге
PHP: Check if cURL is enabled.
This is a short guide on how to programmatically check whether cURL is enabled as a PHP extension or not. By checking to see if cURL is enabled, you can make your PHP code more portable by designing a fallback.
There are three popular approaches to this kind of check.
Does curl_init exist as a function?
The function curl_init allows us to initialize a cURL session. If it does not exist, then we can presume that the cURL module has not been loaded.
if(function_exists('curl_init') === false)< //curl_init is not defined //cURL not enabled >
In the code above, we used the PHP function function_exists to test whether curl_init is defined or not. If the function is not defined, we can presume that cURL has not been enabled and/or installed.
If curl_init is defined, then function_exists will return a boolean TRUE value.
Get loaded extensions.
Another approach is to use the PHP function get_loaded_extensions, which will return an array of all the PHP extensions / modules that have been loaded.
//Check if "curl" can be found in the array of loaded extensions. if(in_array('curl', get_loaded_extensions())) < //cURL module has been loaded >else< //It has not been loaded. Use a fallback. >
In the example above, we simply searched the array returned by get_loaded_extensions for the string “curl”. If the string “curl” cannot be found inside this array, then the extension has not been loaded and we can tell our code to use a fallback.
Yet another alternative is to use the function extension_loaded like so:
You can choose which approach you think is best, as they all accomplish the same thing and the performance differences are pretty negligible at best.
Fallback.
If you are looking for a fallback to use when the cURL module has not been enabled, then you can check out the following guides that I wrote:
Hopefully, you found this guide to be useful!
как проверить, включен ли curl
См. Руководство по написанию function , поместите туда однострочник, замените echo на return и вырежьте тройник.
7 ответов
Просто верните существующий чек из function.
Это работает и принимается, но приведенные ниже ответы — это то, что я бы посчитал менее хакерским и более понятным для кого-то другого, читающего код. Если я прочитаю это, я могу подумать, что вы специально проверяете, можете ли вы найти версию curl, а не проверяете, загружен ли curl. extension_loaded(‘curl’) гораздо более прямой.
else < return false; >> // Ouput text to user based on test if (_is_curl_installed()) < echo "cURL is installed on this server"; > else < echo "cURL is NOT installed on this server"; > ?>
var_dump(extension_loaded('curl'));
function_exists возвращает значение true или false . Вы можете просто вернуть его возвращаемое значение. Там нет необходимости для 4 дополнительных строк кода, для этого один лайнер. Кроме того, ваша функция не имеет конца > !
согласен с накладными расходами в коде, но у функции действительно есть конец> в виде одной строки, если операторам else не нужны фигурные скобки. Но, возможно, плохой отступ заставил вас совершить эту ошибку.
Вы всегда можете создать новую страницу и использовать phpinfo() . Прокрутите страницу вниз до секции curl и посмотрите, включена ли она.
Всегда лучше использовать универсальную функцию повторного использования в вашем проекте, которая возвращает, загружается ли расширение. Вы можете использовать следующую функцию для проверки —
function isExtensionLoaded($extension_name)
echo isExtensionLoaded('curl'); echo isExtensionLoaded('gd');
Предположим, вы работаете в большом проекте и хотите проверить вышеуказанное условие более 30-40 раз. Затем вам нужно написать вручную от 30 до 40 раз, и внезапно вы получили требование, что вам нужно проверить какое-то условие, прежде чем в это время вам нужно будет выполнить поиск и поместить условие во все 30 — 40 мест в вашем проекте. Вместо этого, если у вас была функция многократного использования, вы можете поместить это условие в функцию и избежать лишних затрат при поиске, замене или добавлении кода.
Вот для чего нужны инструменты рефакторинга. Но по сути: ввод кода, о котором вы не знаете наверняка, что это необходимо, я бы посчитал недостатком. Поэтому причина, по которой вы называете это причина, по моему мнению, не делать этого.
Отличная идея. Я начал оборачивать все нативные функции php. Я собрал их в библиотеке. Кто-нибудь заинтересован?
curl_getinfo
// Проверяем наличие ошибок
if (! curl_errno ( $ch )) switch ( $http_code = curl_getinfo ( $ch , CURLINFO_HTTP_CODE )) case 200 : # OK
break;
default:
echo ‘Неожиданный код HTTP: ‘ , $http_code , «\n» ;
>
>
// Закрываем дескриптор
curl_close ( $ch );
?>
Примечания
Замечание:
Информация, собранная этой функцией, будет сохранена при дальнейшем использовании дескриптора. Это означает, что если статистика не будет перезаписана самой функцией, будет возвращаться информация по предыдущему запросу.
User Contributed Notes 13 notes
Here are the response codes ready for pasting in an ini-style file. Can be used to provide more descriptive message, corresponding to ‘http_code’ index of the arrray returned by curl_getinfo().
These are taken from the W3 consortium HTTP/1.1: Status Code Definitions, found at
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
101=»Switching Protocols» [Successful 2xx]200=»OK»
201=»Created»
202=»Accepted»
203=»Non-Authoritative Information»
204=»No Content»
205=»Reset Content»
206=»Partial Content» [Redirection 3xx]300=»Multiple Choices»
301=»Moved Permanently»
302=»Found»
303=»See Other»
304=»Not Modified»
305=»Use Proxy»
306=»(Unused)»
307=»Temporary Redirect» [Client Error 4xx]400=»Bad Request»
401=»Unauthorized»
402=»Payment Required»
403=»Forbidden»
404=»Not Found»
405=»Method Not Allowed»
406=»Not Acceptable»
407=»Proxy Authentication Required»
408=»Request Timeout»
409=»Conflict»
410=»Gone»
411=»Length Required»
412=»Precondition Failed»
413=»Request Entity Too Large»
414=»Request-URI Too Long»
415=»Unsupported Media Type»
416=»Requested Range Not Satisfiable»
417=»Expectation Failed» [Server Error 5xx]500=»Internal Server Error»
501=»Not Implemented»
502=»Bad Gateway»
503=»Service Unavailable»
504=»Gateway Timeout»
505=»HTTP Version Not Supported»
And an example usage:
$ch = curl_init (); // create cURL handle (ch)
if (! $ch ) die( «Couldn’t initialize a cURL handle» );
>
// set some cURL options
$ret = curl_setopt ( $ch , CURLOPT_URL , «http://mail.yahoo.com» );
$ret = curl_setopt ( $ch , CURLOPT_HEADER , 1 );
$ret = curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , 1 );
$ret = curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 0 );
$ret = curl_setopt ( $ch , CURLOPT_TIMEOUT , 30 );
// execute
$ret = curl_exec ( $ch );
if (empty( $ret )) // some kind of an error happened
die( curl_error ( $ch ));
curl_close ( $ch ); // close cURL handler
> else $info = curl_getinfo ( $ch );
curl_close ( $ch ); // close cURL handler
if (empty( $info [ ‘http_code’ ])) die( «No HTTP code was returned» );
> else // load the HTTP codes
$http_codes = parse_ini_file ( «path/to/the/ini/file/I/pasted/above» );
// echo results
echo «The server responded:
» ;
echo $info [ ‘http_code’ ] . » » . $http_codes [ $info [ ‘http_code’ ]];
>
Проверка поддержки cURL на вашем хостинге
Если первый способ пишит что Работает, но у вас сомнения, то пробуйте этот способ.
1. Скачайте архив скриптов для проверки
Или создайте файлы сами
phpinfo.php
2. Загрузите файлы на ваш сервер
Открыв файл phpinfo.php, вы увидите информацию о php на вашем сервере.
Найдите там curl.
Если в таблице будет написано «cURL support enabled», то на вашем сервере есть curl.
Для большей уверенности, можете открыть в браузере файл curl_test.php
Если curl действительно есть, то загрузится главная страница сайта http://flapps.ru
Re: Проверка поддержки cURL на вашем хостинге
Сообщение eko » 17 ноя 2010, 18:43
Александр Создатель сайта
Сообщения: 4574 Зарегистрирован: 27 сен 2009, 16:45 Откуда: Санкт-Петербург
Re: Проверка поддержки cURL на вашем хостинге
Сообщение Александр » 19 ноя 2010, 00:23
eko
Какой хостинг?
Попробуй поменять url на другой адрес. Попробуй поменять его на адрес страницы на твоём домене.
Re: Проверка поддержки cURL на вашем хостинге
Сообщение aydar » 26 ноя 2010, 17:39
KIka_kok FL Team
Сообщения: 680 Зарегистрирован: 18 июл 2010, 19:52 Откуда: Apple city
Re: Проверка поддержки cURL на вашем хостинге
Сообщение KIka_kok » 04 янв 2011, 17:39
Configure Command './configure' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes' '--enable-mbstring' '--enable-pdo=shared' '--enable-sockets' '--enable-zend-multibyte' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '[b]--with-curl=[/b]/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--with-gettext' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libexpat-dir=/usr' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-sqlite=shared' '--with-ttf' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr'