cURL + HTTP_POST, продолжайте получать ошибку 500. Понятия не имеет? - PullRequest
3 голосов
/ 16 марта 2010

Хорошо, я хочу создать HTTP_POST, используя cURL для сайта SSL. Я уже импортировал сертификат на свой сервер. Это мой код:

$url  = "https://www.xxx.xxx";
$post = "";# all data that going to send

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0'); 

$exe  = curl_exec($ch);
$getInfo = curl_getinfo($ch);

if ($exe === false) {
    $output = "Error in sending";
    if (curl_error($ch)){
        $output .= "\n". curl_error($ch);
    }
} else if($getInfo['http_code'] != 777){
    $output = "No data returned. Error: " . $getInfo['http_code'];
    if (curl_error($ch)){
        $output .= "\n". curl_error($ch);
    }
}

curl_close($ch);

echo $output;

Продолжайте возвращать "500". По данным w3schools, 500 означает «Внутренняя ошибка сервера». Мой сервер имеет проблемы? Как решить / устранить эту проблему?

Ответы [ 3 ]

6 голосов
/ 07 января 2013

Некоторые серверы (особенно запрашиваемые с SSL) возвращают 500 в случаях, когда некоторые параметры запроса установлены неверно.

Чтобы избежать « 500 ошибка » (например), обязательно:

  • установить правильный заголовок "Referer:", если необходимо, с

curl_setopt(CURLOPT_REFERER, 'http://site.com/ref_page');

  • установить правильный заголовок "User-Agent:", с

curl_setopt(CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');

1 голос
/ 16 марта 2010
$url  = "https://www.xxx.xxx";
$post = "";# all data that going to send

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT    5.0'); 

$exe  = curl_exec($ch);
$getInfo = curl_getinfo($ch);

if ($exe === false) {
$output = "Error in sending";
if (curl_error($ch)){
    $output .= "\n". curl_error($ch);
}
} else if($getInfo['http_code'] != 777){
$output = "No data returned. Error: " . $getInfo['http_code'];//as preline
if (curl_error($ch)){
    $output .= "\n". curl_error($ch);
}
}

curl_close($ch);

echo $output;

КСТАТИ: Убедитесь, что модуль CURL установлен.

0 голосов
/ 16 марта 2010

У вас что-то не так на вашем сервере или в скрипте, выполняемом на сервере, который может вызвать необработанное исключение.

Вы должны проверить доступ к серверу и журналы ошибок.

...