Функция 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 (указатель не был загружен)
Ответ 4
Я получил его работать в Ubuntu 16.04, выполнив следующие действия. Моя версия PHP была 7,0
sudo apt-get установить php7.0-curl
перезапуск службы sudo apache2
я получил это по этой ссылке, проверьте здесь для более подробной информации
Ответ 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"
Ответ 9
Просто добавлю мой ответ для случая, когда в вашей системе установлено несколько версий PHP, и вы уверены, что уже установили пакет php-curl
, и, тем не менее, Apache по-прежнему выдает ту же ошибку.
curl_init() не определено, даже если php-curl включен в Php 7.
Ответ 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.