Неустранимая ошибка: вызов неопределенной функции curl_init () в ... в строке 9 - PullRequest
62 голосов
/ 09 декабря 2010
<?php
$filename = "xx.gif";
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));

// $data is file data
$pvars   = array('image' => base64_encode($data), 'key' => IMGUR_API_KEY);
$timeout = 30;
$curl    = curl_init();

curl_setopt($curl, CURLOPT_URL, 'http://api.imgur.com/2/upload.xml');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);

$xml = curl_exec($curl);

curl_close ($curl);

var_dump($xml);
?>

Я играю с Imgur API, но, похоже, он не работает.PHP.net говорит, что curl_init() в PHP5, но мой хост говорит, что это не так.Как я могу сделать эту работу?

Ответы [ 10 ]

122 голосов
/ 20 ноября 2011

В старых версиях Debian и Ubuntu вы решили эту проблему, установив расширение Curl для PHP и перезапустив веб-сервер. Предполагая, что веб-сервер Apache 2:

sudo apt-get install php5-curl
sudo service apache2 restart

В более новых версиях имя пакета изменилось:

sudo apt install php-curl

Возможно, вам потребуется установить еще:

sudo apt-get install curl libcurl3 libcurl3-dev;
38 голосов
/ 09 декабря 2010

curl - это расширение, которое нужно установить, оно не имеет ничего общего с версией PHP.

http://www.php.net/manual/en/curl.setup.php

14 голосов
/ 07 марта 2012

У меня недостаточно репутации, чтобы комментировать.Использование Ubuntu и простое:

sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart

НЕ работало для меня.

По какой-то причине curl.so было установлено в месте, не выбранном по умолчанию.Я проверил extension_dir в моем php.ini и скопировал curl.so на мой extension_dir

cp /usr/lib/php5/20090626/curl.so  /usr/local/lib/php/extensions/no-debug-non-zts-20090626

Надеюсь, это кому-нибудь поможет, соответственно измените местоположение.

12 голосов
/ 27 августа 2011

Для Ubuntu

Установите расширение Curl для PHP и перезапустите сервер Apache.

sudo apt-get install php5-curl
sudo service apache2 restart

Для Windows

Проблема возникает из-за не включения lib_curl.dll в PHP. также загрузите следующее расширение, если оно не работает, поэтому расширение в php.ini или удалите комментарий, если оно уже существует в файле php.ini, а затем удалите комментарий.

extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll

Теперь перезапустите сервер Apache. Если вы получаете сообщение об ошибке «Невозможно загрузить php_curl.dll», скопируйте библиотеки SSLEAY32.PHP, libEAY32.dll (OpenSSL) в папку System32.

3 голосов
/ 22 августа 2018

для php 7.0 в Ubuntu

sudo apt-get install php7.0-curl

И, наконец,

sudo service apache2 restart 

или

sudo service nginx restart
2 голосов
/ 03 марта 2018

Опытный опыт на Ubuntu 16.04 с PHP 7.1.14.Чтобы решить, сначала поместите это в скрипт и выполните.Он вернет true, если curl установлен и включен, в противном случае он вернет false.

<?php
    var_dump(extension_loaded('curl'));
?>

Если вернет false, выполните

sudo apt-get install php7.1-curl

И, наконец,

sudo service apache2 restart

После перезапуска скрипт вернет true и, надеюсь, ваша ошибка должна быть устранена.

2 голосов
/ 25 июня 2017

сделать это

sudo apt-get install php-curl

и перезапустить сервер

sudo service apache2 restart
2 голосов
/ 24 декабря 2013

Существует решение со всеми необходимыми деталями для Windows 7 x64:

http://www.youtube.com/watch?v=7qNTi1sEfE8

Это на французском языке, но вы можете понять все!Я решил ту же проблему, даже не говорю по-французски.: -)

Многие ответы забывают упомянуть, что вам нужно добавить новую версию файла php_curl.dll из этого места: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Я добавил новую версию php_curl.dll из архива php_curl-5.4.3-VC9-x64.zip в папки: C: \ wamp \ bin \ php \ php5.4.3 \ ext и C: \ Windows \ System32 и все было хорошо!

0 голосов
/ 19 января 2017

Это с официального сайта. php.net

После установки PHP.

Windows

Переместить в папку Windows \ system32: libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll

Linux

Переместить в папку Apache24 \ bin libssh2.dll

Тогда раскомментируйте расширение = php_curl.dll в php.ini

0 голосов
/ 09 декабря 2010
$ch = curl_init('http://api.imgur.com/2/upload.xml'); //initialising our url

curl_setopt($ch, CURLOPT_MUTE, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);  //used for https headers 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  //used for https headers

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($pvars));  
//the value we post

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //waiting for reponse, default value in php is zero ie, curls normally do not wait for a response

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0'); 

$output = curl_exec($ch); //the real execution 
curl_close($ch);

echo $output;

Попробуйте этот код. Я не уверен в этом. Но я использовал его для отправки XML-данных на удаленный URL.

...