функция curl init() не работает
Привет я нах PHP Post Request внутри POST Request думаю, что это может быть полезно для меня, и мой код приведен ниже
$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);
форма индекса.php файл и index2.php-это еще один файл в том же каталоге, и когда я открываю страницу, Я получаю следующую ошибку в моей ошибке.файл журнала
[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
что я хочу сделать, это у меня есть форма бронирования, которая отправляет запрос post, а затем я хочу обработать значения post и снова отправить запрос post в paypal
15 ответов
вам необходимо установить поддержку CURL для php.
в Ubuntu, вы можете установить его с помощью
sudo apt-get install php5-curl
Если вы используете apt-get, вам не нужно будет редактировать конфигурацию PHP, но вам нужно будет перезапустить Apache.
sudo /etc/init.d/apache2 restart
Если у вас все еще возникают проблемы, попробуйте использовать phpinfo () чтобы убедиться, что завиток указан как установленный. (Если это не так, вам может потребоваться открыть другой вопрос, спрашивая, почему ваши пакеты не установка.)
существует руководство по установке в PHP CURL документация.
для Windows, если кто-то заинтересован, раскомментируйте следующую строку (удалив ;) из php.ini
;extension=php_curl.dll
перезапустите сервер apache.
Для Ubuntu:
добавить extension=php_curl.so
на php.ini для включения, если необходимо. Тогда sudo service apache2 restart
это вообще позаботился автоматически, но есть ситуации-например, в общих средах разработки-где это can необходимо включить вручную.
отпечаток будет соответствовать всем трем из этих условий:
- фатальная ошибка при вызове curl_init ()
- в php_info вы увидите модуль curl автор (с указанием curl установлен и доступен)
- также в php_info вы не увидите блока конфигурации curl (указывающего, что curl не был загружен)
Я получил его работу в ubuntu 16.04, выполнив следующие шаги.Моя версия php была 7.0
sudo apt-get установить php7.0-curl
перезапуск службы sudo apache2
я получил его из этой ссылки проверьте здесь для получения более подробной информации
в моем случае, в Xubuntu, мне пришлось установить libcurl3 libcurl3-dev библиотеки. С этой командой все работало:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
я получил эту ошибку, используя 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"
исправить эту ошибку, я сделал:
- на раскомментируйте эту строку:
extension=php_curl.dll
- на раскомментируйте эту строку:
extension_dir = "ext"
- я перезапустил NETBEANS, так как я использовал встроенный сервер
Шаг 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"
просто добавьте мой ответ для случая, когда в вашей системе установлено несколько версий PHP, и вы уверены, что вы уже установили php-curl
пакет, и все же Apache по-прежнему дает вам ту же ошибку.
curl_init () не определено, даже если php-curl включен в Php 7.
(попытка заставить Curl работать через PHP и Apache в Windows...)
Я продолжал получать сообщение об ошибке: Вызов неопределенной функции ' curl_init ()'
Я убедился, что включил curl с этой строкой в моем php.ini-файл: расширение=php_curl.dll файлы
Я убедился, что переменная extension_dir установлена правильно, как это: extension_dir = "ext"
Я делал все, что все остальные говорили на форумах, и curl не появлялся в моем звонке функцию phpinfo(), и я продолжал получать ту же ошибку сверху.
наконец я узнал, что Apache по умолчанию ищет php.ini в C:\Windows папка. Я менял php.ini в папке установки PHP. Однажды я скопировал свой php.ini в C:\Windows все сработало.
мне потребовалась вечность, чтобы понять это, поэтому я подумал, что напишу, если это поможет кому-то еще.
RusAlex ответ прав в том, что для Apache вы должны установить и включить curl и перезапустить службу 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 / + источник / php5 / + ошибка / 1242376 Поэтому мне пришлось убить все простаивающие процессы php5-fpm, чтобы перезапустить php5-fpm, чтобы модуль curl был фактически загружен
sudo kill <Process Id of php5-fpm Process)
функция curl_int(); причина ошибки сервера, установка sudo apt-get install php5-curl перезапустите сервер apache2 .. он будет работать как шарм
этот ответ для запроса 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
на PHP 7 и Windows x64
libeay32.dll, libssh2.dll и ssleay32.dll не должна находиться в apache / bin и должна существовать только в каталоге php и добавлять каталог php в системную переменную среды. Эта работа для меня.
очевидно в php.ini вы должны включить php_curl.также DLL.