Есть ли альтернатива cURL

В настоящее время я работаю с платежным шлюзом instamojo.

У меня есть идентификатор платежа для того же и с помощью следующего кода, чтобы получить статус платежа

echo $cUrl = 'https://test.instamojo.com/api/1.1/payments/' . $payment_id;
(function_exists('curl_init')) ? '' : die('cURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $cUrl);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Api-Key:90a1c44nmb8ac4e65nmnm3eab5b308cf",
"X-Auth-Token:8164083509a889951fhjhjh1ff89c4"));
$response = curl_exec($ch);
$error_number = curl_errno($ch);
$error_message = curl_error($ch);
curl_close($ch);
$response_obj = json_decode($response, true);
echo "Eror number: $error_number<br />";
echo "Eror message: $error_message<br />";
print_r($response_obj);

if($response_obj['success'] == false) {
$message = json_encode($response_obj['message']);
return Array('payment' => Array('status' => $message));

}
if(empty($response_obj) || is_null($response_obj)){
return Array('payment' => Array('status' => 'No response from the server.'));
}
else{
return $response_obj;
}

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

Но когда я запускаю это на моем сервере (то есть 000webhost.com), но получаю ошибку:

Warning:  curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/a2963438/public_html/wp-content/plugins/instamojo-register/imojoregister_shortcode.php on line 18

Я использую бесплатный аккаунт 000webhost.com, поэтому я не могу включить safe_mode или редактировать php.ini,

Итак, я хочу спросить, есть ли какой-либо другой метод для достижения ответа этого URL?

0

Решение

Вы можете взглянуть на Guzzle.

http://docs.guzzlephp.org/en/latest/

http://docs.guzzlephp.org/en/latest/quickstart.html

Согласно их часто задаваемым вопросам, расположенным здесь: http://docs.guzzlephp.org/en/latest/faq.html#does-guzzle-require-curl

Требуется ли для Guzzle cURL?

Нет. Guzzle может использовать любой обработчик HTTP для отправки запросов. Это означает, что Guzzle можно использовать с cURL, потоковой оберткой PHP, сокетами и неблокирующими библиотеками, такими как React. Вам просто нужно настроить обработчик HTTP, чтобы использовать другой метод отправки запросов.

Заметка

Исторически в Guzzle для отправки HTTP-запросов использовался только cURL. cURL — это замечательный HTTP-клиент (возможно, лучший), и Guzzle продолжит использовать его по умолчанию, когда он станет доступен. Это редко, но некоторые разработчики не имеют установленного cURL в своих системах и не сталкиваются с проблемами, связанными с версией. Благодаря использованию сменных обработчиков HTTP, Guzzle теперь гораздо более настраиваемый и может адаптироваться к потребностям большего числа разработчиков.

6

Другие решения

Лучший способ — обновить ваш сервер, значит, пока вы можете использовать file_get_contents для того, чтобы ваши дела были сделаны

1

По вопросам рекламы [email protected]