Как включить curl в php
Перейти к содержимому

Как включить curl в php

  • автор:

Настройка curl php на Windows

Краткая инструкция для тех, кто хочет настроить curl php на Windows 8.1 x64. Если curl не настроен на вашем вэб-сервере, то возникает следующая ошибка: Fatal error: Call to undefined function curl_init().

Настройка cURL

Написанное ниже актуально для связки Windows 8.1 x64 , Windows10 x64 + Apache 2.4.12 (win32) + Open SSl 1.0.1m + PHP 5.6.11 (php-5.6.11-Win32-VC11-x86).

  1. Скачиваем библиотеку cURL http://winampplugins.co.uk/curl. Распаковываем в любую папку. Например, «W:\WebServers\usr\local\curl».
  2. В файле настроек PHP php.ini необходимо включить расширение extension=php_curl.dll.
  3. Пункт не обязательный, но во многих источниках его рекомендуют выполнять. У нас работает без выполнения этого пункта. Из папки где установлен PHP скопировать в папку « C:\Windows \system32» следующие библиотеки: libssh2.dll, php_curl.dll (находится в папке ext), ssleay32.dll, libeay32.dll. Дополнительно файл ssleay32.dll необходимо скопировать в «C:\Windows\SysWOW64».
  4. Добавить в переменные среды в переменную Path пути до папки установки curl.exe и файла php.ini. Например, «W:\WebServers\usr\local\curl;W:\WebServers\usr\local\php5». Очень порадовало то, что в windows10 (1511) появился новый интерфейс редактирования переменных сред. Стало очень удобно редактировать параметры.

Включение поддержки SSL для cURL

  1. Скачать файл http://curl.haxx.se/ca/cacert.pem в папку, в которой установлена библиотека curl.exe.
  2. Переименовать скаченный файл в curl-ca-bundle.crt
  3. Перезагрузить компьютер.

Проверка работы cURL

Запустите командную строку Windows. Выполните следующую команду:

curl https://www.google.com или curl http://filinkov.ru

curl_init

Инициализирует новый сеанс cURL и возвращает дескриптор, который используется с функциями curl_setopt() , curl_exec() и curl_close() .

Список параметров

Если указан, опция CURLOPT_URL будет автоматически установлена в значение этого аргумента. Вы можете вручную установить эту опцию с помощью функции curl_setopt() .

Замечание:

Протокол file становится недоступным в cURL, если задана опция open_basedir.

Возвращаемые значения

Возвращает дескриптор cURL в случае успешного выполнения, и false в случае возникновения ошибки.

Список изменений

Версия Описание
8.0.0 В случае успешного выполнения возвращает экземпляр CurlHandle ; раньше, возвращался ресурс ( resource ).
8.0.0 url теперь допускает значение null.

Примеры

Пример #1 Инициализация нового сеанса cURL и загрузка веб-страницы

// создание нового ресурса cURL
$ch = curl_init ();

// установка URL и других необходимых параметров
curl_setopt ( $ch , CURLOPT_URL , «http://www.example.com/» );
curl_setopt ( $ch , CURLOPT_HEADER , 0 );

// загрузка страницы и выдача её браузеру
curl_exec ( $ch );

// завершение сеанса и освобождение ресурсов
curl_close ( $ch );
?>

Смотрите также

  • curl_close() — Завершает сеанс cURL
  • curl_multi_init() — Создаёт набор cURL-дескрипторов

Improve This Page

User Contributed Notes 2 notes

1 year ago

This may be obvious, but:

Note that is MUCH faster to use use a single instance to make a series of curl requests rather than creating a new instance for each request.

5 months ago

NextgenThemes’ note is applicable for very very limited situations. For completeness’s sake, let’s consider the following code snippet:

/*
Your localhost has a default Apache which simply returns «It works!»
*/

// begin section
// this section is slow

// call localhost, create new handle each time
$time = microtime ( true );
foreach ( range ( 1 , $repeatCount ) as $ignored ) $ch = curl_init ( «http://localhost» );
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , true );
$response = curl_exec ( $ch );
// do something with the response
unset( $response );
curl_close ( $ch );
>
unset( $ch );
$elapsed = microtime ( true ) — $time ;
echo «Recreate curl handle, time taken: » . $elapsed . «\n» ;

// begin section
// this section is much faster

// call localhost, but reuse the handle
$time = microtime ( true );
$ch = curl_init ( «http://localhost» );
foreach ( range ( 1 , $repeatCount ) as $ignored ) curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , true );
$response = curl_exec ( $ch );
// do something with the response
unset( $response );
>
curl_close ( $ch );
$elapsed = microtime ( true ) — $time ;
echo «Reuse curl handle, time taken: » . $elapsed . «\n» ;

/*
Example output:
Recreate curl handle, time taken: 11.289301872253
Reuse curl handle, time taken: 0.53790807723999
*/

?>

The above code supports the claim by NextgenThemes, however the «send curl requests in sequence» method in general is unnecessarily slow because:
— network transfer time (e.g. 100ms)
— remote processing time (e.g. 50ms)
— usually, no need to send requests in specific sequence

So, in practice, when you need to send multiple curl requests at the same time, just use the curl_multi_init method. Don’t consider the «send curl requests in sequence» method unless you have very very specific/special needs.

  • Функции cURL
    • curl_​close
    • curl_​copy_​handle
    • curl_​errno
    • curl_​error
    • curl_​escape
    • curl_​exec
    • curl_​getinfo
    • curl_​init
    • curl_​multi_​add_​handle
    • curl_​multi_​close
    • curl_​multi_​errno
    • curl_​multi_​exec
    • curl_​multi_​getcontent
    • curl_​multi_​info_​read
    • curl_​multi_​init
    • curl_​multi_​remove_​handle
    • curl_​multi_​select
    • curl_​multi_​setopt
    • curl_​multi_​strerror
    • curl_​pause
    • curl_​reset
    • curl_​setopt_​array
    • curl_​setopt
    • curl_​share_​close
    • curl_​share_​errno
    • curl_​share_​init
    • curl_​share_​setopt
    • curl_​share_​strerror
    • curl_​strerror
    • curl_​unescape
    • curl_​upkeep
    • curl_​version
    • Copyright © 2001-2024 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

    Как включить curl в php

    Для использования cURL необходимо собрать PHP с опцией —with-curl[=DIR], где DIR — имя каталога, содержащего подкаталоги lib и include . Каталог include должен содержать подкаталог curl с файлами easy.h и curl.h . В каталоге lib должен быть файл libcurl.a .

    Замечание: Замечание для пользователей Win32
    Для работы с этим модулем в Windows файлы libeay32.dll и ssleay32.dll , либо, начиная с OpenSSL 1.1, libcrypto-*.dll и libssl-*.dll , должны существовать в системной переменной окружения PATH . Также libssh2.dll должен присутствовать в вашей переменной окружения PATH . Вам не требуется файл libcurl.dll с сайта cURL.

    Improve This Page

    User Contributed Notes 21 notes

    15 years ago

    You may be confused, as I was, by the instructions for installing cURL in php. The instruction «To use PHP’s cURL support you must also compile PHP —with-curl[=DIR]. » was murky to me, since I didn’t compile php when I installed it. I just copied all of the necessary files to the correct folders as described very clearly in the php manual.

    I am using Windows XP and Apache with php 5.1.6. In this situation, and it may apply to php versions of 5.0 and later, all one needs to do is remove the «;» from the front of the directive extension=php_curl.dll. You should also check to make certain that libeay32.dll and ssleay32.dll are in your php directory with the other dll’s. This directory should already be in you path, so the instruction to put them in you path is not critical.

    You can then run phpinfo() and you should see a heading for curl in the listing.

    Succinctly, my installation of cURL consisted of removing the semi-colon in front of the ;extension=php_curl.dll line in php.ini, saving php.ini and restarting Apache. You may wish to try this if you are using php 5.0 and later and are having difficulty understanding the instructions on the cURL installation page at php.net

    8 years ago

    Upgrading to php 5.6.9 on Windows 7 x64 curl no longer is recognised. No errors on server start package just not available and didn’t show in phpinfo.php. deplister.exe was ok
    I fixed coping the following list files from php folder (in my case D:\xampp\php)
    libeay32.dll
    libssh2.dll
    ssleay32.dll
    to c:\xampp\apache\bin (or your apache\bin path), restart apache and works fine, apache’s libraries were outdated

    12 years ago

    I already had Apache and PHP5 setup, but simply adding php5-curl and curl did *not* work. I also had to get libcurl3 and libcurl3-dev. The full command:

    sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

    You’ll know if it works because phpinfo() will get a new section with Curl info.

    6 years ago

    You dont need to copy files to use PHP CURL with Apache 2.4 — use the LoadFile directive in your apache config file instead:
    LoadFile «C:/php7/libssh2.dll»
    (that was all it took for me to get it work)

    6 years ago

    Beginning with version 1.1.0 OpenSSL did change their libary names!
    libeay32.dll is now libcrypto-*.dll (e.g. libcrypto-1_1-x64.dll for OpenSSL 1.1.x on 64bit windows)
    ssleay32.dll is now libssl-*.dll (e.g. libssl-1_1-x64.dll for OpenSSL 1.1.x on 64bit windows)

    15 years ago

    If you’re dense like I am, spare yourself the trouble on an Ubuntu system (probably Debian too) and.

    $ sudo apt-get install php5-curl

    Then feel dumb, but not as dumb as me.

    cURL должен быть установлен и настроен как расширение PHP

    Здравствуйте.
    При заходе на страницу менеджера пакетов получаю надпись
    «cURL должен быть установлен и настроен как расширение PHP, если вы собираетесь использовать «Менеджер пакетов». Информацию по установке и настройке cURL можно найти здесь PHP cURL website.»

    Что мне вообще следует проверить?

    12 мая 2020, 14:34

    Andrey /users/facehoof modx.pro https://modx.pro

    Комментарии: 6

    12 мая 2020, 15:05

    Что мне вообще следует проверить?

    Собственно в заголовке и есть ответ, нужно включить cURL. Если дело на хостинге, можно попробовать поднять версию php либо написать в саппорт. Если на локалке, то включить или установить cURL для используемого сервера.

    12 мая 2020, 15:23

    А можно узнать как на локалке включить? Гугл подсказывает, что стоит отредактировать файл php.ini. Но у меня в папке php есть каталог apache2 в нём файл php.ini. Есть каталог cli в нём такой же файл. В обоих раскомментировал строку extension=curl
    Апач перезапускал. Ничего не изменилось

    12 мая 2020, 15:33
    Что за локалка? Возможно само расширение curl не установлено.
    12 мая 2020, 15:38
    Ну, я ставлю на свой компьютер с ubuntu, локально.
    Расширение установлено, версия вот:

    $ curl -V
    curl 7.65.3 (x86_64-pc-linux-gnu) libcurl/7.65.3 OpenSSL/1.1.1c zlib/1.2.11 libidn2/2.2.0 libpsl/0.20.2 (+libidn2/2.0.5) libssh/0.9.0/openssl/zlib nghttp2/1.39.2 librtmp/2.3
    Release-Date: 2019-07-19
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
    Features: AsynchDNS GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets

    12 мая 2020, 15:53

    Ну, я ставлю на свой компьютер с ubuntu, локально.
    Расширение установлено, версия вот:

    Возможно curl не подключен для активной версии php, фиг знает что там ещё может быть. Попробуй поставить XAMPP

    12 мая 2020, 16:06
    просмотреть список всех модулей для php можно в ubuntu командой

    php -m

    проверьте, может там нет в перечне curl
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2 часа назад

    Я тоже пересмотрел, не до конца понял профит (сокращение кол-ва подписей к объектам?). Зато увидел усложнение, в виде накрутки над классом фасада, .

    Facade Laravel в Modx 2/3 3
    2 часа назад

    После такого пинка по тушке modx у меня появилось желание наконец-то поставить 3 и что-то уже на нём сделать 🙂

    mmxFenom — нативная интеграция шаблонизатора 10
    3 часа назад

    MODX Revolution 2.8.3-pl Ace 1.9.4-pl При выборе ACE ошибка: Uncaught TypeError: Cannot read properties of null (reading ‘match’) at a.$detect.

    ExtraFields. Дополнительные поля для ресурса (modResource) и пользователя (modUserProfile). 32
    Вчера в 17:01

    Вы не указали где именно вывести. Есть у нас как минимум 3 места: Страница товара, страница со списком товаров, корзина. На странице товара пример е.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *