Невозможно следить за местоположением (URL) с помощью cURL, когда установлен параметр open_basedir – ошибка обратного вызова API

Существующий метод отправки значений API
В соответствии с документацией API форма должна быть отправлена ​​в URL-адрес API (method = "POST" и action = "API_URL") с некоторыми полями ввода и полем токена клиента. API обрабатывает, а затем отправляет ответ на файл callback.php на моем сервере (фиксированный – не может его изменить). Страница перенаправляется на URL-адрес API, а затем возвращается к callback.php. Я могу получить доступ к опубликованным vals, используя $_POST в этом файле. Это все о существующем методе, и он отлично работает.

Сообщение на стороне сервера, чтобы скрыть токен клиента
По соображениям безопасности, на этот раз я пытаюсь отправить сообщение с сервера.

Проблема
Обратного вызова не происходит (код внутри файла callback.php не выполняется).

После тяжелой работы cURL, чтобы опубликовать API и получить обратный вызов, я понял, что open_basedir установлен на моем сервере, из-за которого CURLOPT_FOLLOWLOCATION . Я нашел следующий код, который, как представляется, способен выполнить проводку, даже если safe_mode или open_basedir , при условии, что

мы обычно знаем, где мы будем перенаправлены на

Прочтите приведенный ниже код и скажите мне, что здесь подразумевается, if we know generally where we'll be redirected to . Это URL-адрес, по которому API будет перенаправлен после завершения обработки? Тогда да, я знаю, он должен отправить обратный вызов в файл callback.php на моем сервере, но этого не происходит. : –

 function curl($url, $postVars) { $go = curl_init($url); curl_setopt ($go, CURLOPT_URL, $url); curl_setopt($go, CURLOPT_VERBOSE, 1); //follow on location problems if (ini_get('open_basedir') == '' && (ini_get('safe_mode')== 'Off')) { curl_setopt ($go, CURLOPT_FOLLOWLOCATION, $l); $syn = curl_exec($go); if(curl_error($go)) return false; } else $syn = curl_redir_exec($go, $postVars); curl_close($go); return $syn; } function curl_redir_exec($ch, $postVars) { static $curl_loops = 0; static $curl_max_loops = 20; if ($curl_loops++>= $curl_max_loops) { $curl_loops = 0; return FALSE; } curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postVars); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $data = curl_exec($ch); if(curl_error($ch)) return false; list($header, $data) = explode("\n\r", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $redirect_page = "[0-9]*.html"; $base_redirect = "http://example.com/"; if ($http_code == 301 || $http_code == 302) { $matches = array(); $pregs = eregi($redirect_page, $data, $matches); $new_url = $base_redirect . $matches[0]; if (!$new_url) { //couldn't process the url to redirect to $curl_loops = 0; return $data; } curl_setopt($ch, CURLOPT_URL, $new_url); return curl_redir_exec($ch, $postVars); } else { $curl_loops=0; return $data; } } 

При запуске кода он входит в conditon, где $http_code является ни 301 ни 302 (в моем случае это 200 ). И печать данных $ дает следующее: –

 HTTP/1.1 200 OK Date: Wed, 01 Sep 2010 10:02:44 GMT Server: Apache/2 X-Powered-By: PHP/5.2.11 Content-Length: 0 Connection: close Content-Type: text/html 

Помогите
Помогите мне, ребята.
Какой-нибудь код нуждается в этом?
Будет ли cURL работать не в моем случае? (это асинхронный API – он вызывает обратный вызов, когда он сделан). Исходный запрос не получает возвращаемого значения в такой настройке.)

Спасибо, Сандипан

Solutions Collecting From Web of "Невозможно следить за местоположением (URL) с помощью cURL, когда установлен параметр open_basedir – ошибка обратного вызова API"