Функция curl_init() не работает

Привет, я пытаюсь Запрос на публикацию PHP внутри запроса POST, думая, что это может быть полезно для меня, и мой код приведен ниже

$sub_req_url = "http://localhost/index1.php";

$ch = curl_init($sub_req_url);
$encoded = '';

// include GET as well as POST variables; your needs may vary.
foreach($_GET as $name => $value) {
  $encoded .= urlencode($name).'='.urlencode($value).'&';
}

foreach($_POST as $name => $value) {
  $encoded .= urlencode($name).'='.urlencode($value).'&';
}

// chop off last ampersand
$encoded = substr($encoded, 0, strlen($encoded)-1);

curl_setopt($ch, CURLOPT_POSTFIELDS,  $encoded);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_exec($ch);
curl_close($ch);

формирует файл index.php и index2.php - это другой файл в том же каталоге, и когда я открываю страницу, я получаю следующую ошибку в файле error.log

[Sat Dec 18 15:24:53 2010] [error] [client ::1] PHP Fatal error:  Call to undefined function curl_init() in /var/www/testing1/index.php on line 5

Что я хочу сделать, так это то, что у меня есть форма резервирования, которая отправляет почтовый запрос, а затем я хочу обрабатывать значения сообщений и отправлять снова почтовый запрос в paypal

Ответ 1

Вам нужно установить поддержку CURL для php.

В Ubuntu вы можете установить его через

sudo apt-get install php5-curl

Если вы используете apt-get, вам не нужно будет редактировать какую-либо конфигурацию PHP, но вам нужно будет перезапустить Apache.

sudo /etc/init.d/apache2 restart

Если у вас все еще возникают проблемы, попробуйте использовать phpinfo(), чтобы убедиться, что CURL указан как установленный. (Если это не так, вам может потребоваться открыть другой вопрос, спрашивая, почему ваши пакеты не устанавливаются.)

В документации PHP CURL содержится инструкция по установке.

Ответ 2

Для Windows, если кто-то заинтересован, раскомментируйте следующую строку (удалив;) из php.ini

;extension=php_curl.dll

Перезапустите сервер Apache.

Ответ 3

Для Ubuntu: добавьте extension=php_curl.so в php.ini, чтобы включить, если необходимо. Тогда sudo service apache2 restart

об этом обычно заботятся автоматически, но есть ситуации - например, в общих средах разработки - где может стать необходимым для повторного включения вручную.

Отпечаток будет соответствовать всем трем из этих условий:

  • Неустранимая ошибка при вызове curl_init()
  • В php_info вы увидите автора модуля curl (указывающий, что curl установлен и доступен)
  • также в php_info, вы не увидите блок конфигурации curl (указатель не был загружен)

Ответ 5

В моем случае, в Xubuntu, мне пришлось установить библиотеки libcurl3 libcurl3-dev. С помощью этой команды все работало:

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

Ответ 6

Шаг 1:

C:/(path to php folder)/php.ini
enable extension=php_curl.dll

(удалить ; в конце строки)

Шаг 2:

Добавьте это в Apache/conf/httpd.conf (libeay32.dll, ssleay32.dll, libssh2.dll находятся непосредственно в папке php7)

# load curl and open ssl libraries
 LoadFile "C:/(path to php folder)/libeay32.dll"
 LoadFile "C:/(path to php folder)/ssleay32.dll"
 LoadFile "C:/(path to php folder)/libssh2.dll"

Ответ 7

Чтобы исправить эту ошибку, я сделал:

  • В файле php.ini раскомментируйте эту строку: extension=php_curl.dll
  • В файле php.ini раскомментируйте эту строку: extension_dir = "ext"
  • Я перезапустил NETBEANS, поскольку я использовал встроенный сервер

Ответ 8

Я получил эту ошибку, используя PHP7/Apache 2.4 на платформе Windows. curl_init работал с CLI, но не с Apache 2.4. Я разрешил его, добавив директивы LoadFile для libeay32.dll и ssleay32.dll:

LoadFile "C:/path/to/Php7/libeay32.dll"
LoadFile "C:/path/to/Php7/ssleay32.dll"
LoadFile "C:/path/to/Php7/php7ts.dll"
LoadModule php7_module "C:/path/to/Php7/php7apache2_4.dll"

Ответ 10

Этот ответ предназначен для запроса https:

Curl не имеет встроенных корневых сертификатов (как это делает большинство современных браузеров). Вам нужно явно указать его на файл cacert.pem:

  curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem');

Без этого curl не может проверить сертификат, отправленный обратно через ssl. Этот же файл корневого сертификата может использоваться каждый раз, когда вы используете SSL в curl.

Вы можете получить файл cacert.pem здесь: http://curl.haxx.se/docs/caextract.html

Ссылка PHP cURL не работает с HTTPS

Ответ 11

(Попытка заставить Curl работать через PHP и Apache в Windows...)

Я продолжал ошибаться, говоря: Вызов функции undefined "curl_init()"

Я убедился, что разрешил завиток этой строки в файле php.ini: расширение = php_curl.dll

Я убедился, что переменная extension_dir была установлена ​​правильно, например: extension_dir = "ext"

Я делал все, что говорили все на форумах, и завивка не появлялась в моем вызове phpinfo(), и я продолжал получать ту же самую ошибку сверху.

Наконец, я узнал, что Apache по умолчанию ищет php.ini в папке C:\Windows. Я изменил php.ini в своей папке установки PHP. Как только я скопировал свой php.ini в C:\Windows, все сработало.

Принял меня навсегда, чтобы понять это, поэтому подумал, что я опубликую, если это поможет кому-то другому.

Ответ 12

Ответ RusAlex прав в том, что для Apache вам необходимо установить и включить завиток и перезапустить службу apache:

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

На моем сервере Ubuntu с nginx и php5-fpm я столкнулся с следующей проблемой. Мне пришлось перезапустить nginx и php5-fpm так:

sudo service nginx restart
sudo service php5-fpm restart

Но у меня были неработающие процессы php5-fpm, которые, по-видимому, были ошибкой в ​​ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 Поэтому мне пришлось убить все простаивающие процессы php5-fpm, чтобы перезапустить php5-fpm, чтобы загружать модуль curl

sudo kill <Process Id of php5-fpm Process)

Ответ 13

функция curl_int(); вызвать ошибку сервера, установить sudo apt-get install php5-curl перезапустите сервер apache2.. он будет работать как шарм

Ответ 14

Для PHP 7 и Windows x64

libeay32.dll, libssh2.dll и ssleay32.dll не должны находиться в apache/bin и должны существовать только в каталоге php и добавлять каталог php в системную переменную среды. Это работа для меня.

Обязательно в php.ini вы должны также включить php_curl.dll.

Ответ 15

Для Linux вы можете установить его через

sudo apt-get install php5-curl

Для Windows (удаление;) из php.ini

;extension=php_curl.dll

Перезапустите сервер Apache.

Ответ 16

 $ch = curl_init('https://textita.com/text');
 $data = array(
   'phone' => '9087938341',
   'message' => 'Hello world',
   'key' => 'textita',
 );

 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

смс апи

Ответ 17

На Ubuntu 18.04 эти две команды решают эту проблему.

sudo apt-get install php5.6-curl //install curl for php 5.6
sudo service apache2 restart //restart apache

Ответ 18

Была эта проблема, но нашел ответ здесь: https://askubuntu.com/questions/1116448/cannot-enable-php-curl-on-ubuntu-18-04-php-7-2

Должен был:

sudo a2dismod php7.0

А также:

sudo a2enmod php7.2

Затем: sudo сервис apache2 перезапустить

Это было после обновления системы до следующей версии Ubuntu. Все остальные ответы, которые я нашел, были устаревшими из-за плохого сертификата, очевидно, на PPA, на который большинство из них указали, но, вероятно, все равно не сработало бы. По-видимому, реальная проблема заключалась в отключении старых версий php.

Ответ 19

Просто установите последнюю версию сервера wamp.