Привет, я пытаюсь отправить 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
Вам необходимо установить поддержку CURL для php.
В Ubuntu вы можете установить его через
sudo apt-get install php5-curl
Если вы используете apt-get, вам не нужно будет редактировать какую-либо конфигурацию PHP, но вам нужно будет перезапустить Apache.
sudo /etc/init.d/apache2 restart
Если у вас все еще возникают проблемы, попробуйте использовать phpinfo (), чтобы убедиться, что CURL указан как установленный. (Если это не так, вам может потребоваться открыть другой вопрос, спрашивая, почему ваши пакеты не устанавливаются.)
В документации PHP CURL есть руководство по установке.
Для Windows, если кто-то заинтересован, раскомментируйте следующую строку (путем удаления;) из php.ini
;extension=php_curl.dll
Перезапустите сервер Apache.
Для Ubuntu: добавьте extension=php_curl.so
в php.ini, чтобы включить, если необходимо. Затем sudo service apache2 restart
обычно это берется автоматически, но есть ситуации – например, в общих средах разработки – где может потребоваться повторное включение вручную.
Отпечаток будет соответствовать всем трем из этих условий:
В моем случае, в Xubuntu, мне пришлось установить библиотеки libcurl3 libcurl3-dev. С этой командой все работало:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
Я получил его в Ubuntu 16.04, выполнив следующие шаги. Моя версия php была 7.0
sudo apt-get install php7.0-curl
sudo service apache2 restart
Я получил его из этой ссылки, чтобы узнать подробнее
Чтобы исправить эту ошибку, я сделал:
php.ini
раскомментируйте эту строку: extension=php_curl.dll
php.ini
раскомментируйте эту строку: extension_dir = "ext"
Я получил эту ошибку, используя 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"
(Попытка заставить Curl работать через PHP и Apache в Windows …)
Я продолжал получать сообщение об ошибке: вызов неопределенной функции curl_init ()
Я убедился, что разрешил завиток этой строки в файле php.ini: extension = php_curl.dll
Я убедился, что переменная extension_dir была настроена правильно, например: extension_dir = "ext"
Я делал все, что говорили на форумах, и завивка не появлялась в моем вызове phpinfo (), и я продолжал получать ту же самую ошибку сверху.
Наконец, я узнал, что Apache по умолчанию ищет php.ini в папке C: \ Windows. Я изменил php.ini в своей папке установки PHP. Как только я скопировал свой php.ini в C: \ Windows, все сработало.
Взял меня навсегда, чтобы понять это, поэтому подумал, что отправлю, если это поможет кому-то другому.
Правильный ответ 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, так что модуль завитка фактически загружен
sudo kill <Process Id of php5-fpm Process)
функция curl_int (); вызвать ошибку сервера, установить sudo apt-get install php5-curl restart apache2 server .. он будет работать как шарм
Этот ответ предназначен для запроса https:
Curl не имеет встроенных корневых сертификатов (как это делает большинство современных браузеров). Вам нужно явно указать его на файл cacert.pem:
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem');
Без этого завиток не может проверить сертификат, отправленный обратно через ssl. Этот же файл корневого сертификата может использоваться каждый раз, когда вы используете SSL в curl.
Вы можете получить файл cacert.pem здесь: http://curl.haxx.se/docs/caextract.html
Ссылки PHP cURL не работает с HTTPS
Просто добавив свой ответ в случае, когда в вашей системе установлено несколько версий PhP, и вы уверены, что уже установили пакет php-curl
, и все же Apache все еще дает вам ту же ошибку.
curl_init () не определено, даже если php-curl включен в Php 7.
просто установите последнюю версию wamp-сервера