PHP cURL enblaed server가 xml 응답 표시를 거부하는 이유가 있습니까? 전화 걸기 서비스에 전화 번호를 게시하는 스크립트를 작성했습니다. 나는 cURL을 사용하는 것이 가장 좋은 방법이라고 생각했습니다.cURL을 사용할 때 XML 응답이 없음
각각 다른 버전의 PHP를 실행하는 3 개의 다른 서버에서 아무 문제없이 응답을받을 수 있습니다. 그러나 특정 서버에서 몇 번 시도해도 빈 응답 만 있습니다. 이 아니라 다른 곳에서 실행
<?php
if ($_POST['request_callback'])
{
$customer_name = cleaninput($_REQUEST['customer_name'],"text");
$debtor_id = cleaninput($_REQUEST['debtor_id'],"number");
$telephone_number = cleaninput($_REQUEST['customer_number'],"number");
$xml_request = '<?xml version="1.0" encoding="utf-8"?>';
$xml_request .= '<CallRequest>';
$xml_request .= '<ProjectName>Noble Test</ProjectName>';
$xml_request .= '<ContactNumberToDial>'.$telephone_number.'</ContactNumberToDial>';
if (isset($_POST['callme_now'])) {
$xml_request .= '<DateTimeToDial></DateTimeToDial>';
} else {
$xml_request .= '<DateTimeToDial>' . date('Y-m-d ' . $_POST['hour_select'] . ':' . $_POST['minute_select'] . ':s') . '</DateTimeToDial>';
}
$xml_request .= '<ListSource>WebLead</ListSource>';
$xml_request .= '<AgentName></AgentName>';
$xml_request .= '<AddToList>False</AddToList>';
$xml_request .= '<SpecificAgent>False</SpecificAgent>';
$xml_request .= '<DBField>';
$xml_request .= '<FieldName>Name</FieldName>';
$xml_request .= '<FieldValue>NobleTesting</FieldValue>';
$xml_request .= '</DBField>';
$xml_request .= '</CallRequest>';
$loginUsername = "username";
$loginPassword = "password";
//$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
// Send using CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://194.217.1.2/ClickToCall/CallRequest.asmx/Call"); // URL to post
//curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_USERPWD, "$loginUsername:$loginPassword"); //login
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// curl_setopt($ch, CURLOPT_HEADER, 1); // make sure we get the header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); # required for https urls
curl_setopt($ch, CURLOPT_POSTFIELDS, 'xmlString=' . urlencode($xml_request));
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch); // runs the post
curl_close($ch);
}
?>
하지만 응답이 다시 전송되지 않습니다이 특정 서버 :
이 질문에 스크립트
. 필자는 Firebug를 사용하여 요청 및 응답 헤더를 확인했으며 둘 다 비어있는 것으로 밝혀졌습니다.아무도 도와 줄 수 있습니까? 명령 행 터미널에서
:
$ telnet 194.217.1.2 80 (press enter)
당신은 가야
감사
제임스
서버 간의 차이점은 무엇입니까? (다른 OS, PHP 버전 등) –
안녕하세요 요르단, 하나의 서버가 Windows 호스트 시스템에서 PHP 5.3.0을 실행하고 있고, 다른 하나는 Linux 시스템에서 PHP 5.2.11을 실행하고 있고 다른 하나는 PHP를 실행 중입니다. 리눅스 시스템에서도 5.2.9. 이 세 가지 모두 문제없이 작동합니다. 작동을 거부 한 PHP 5.2가 실행 중입니다.5 리눅스 시스템에서. 나는 4 명 모두에게서 응답을 얻을 것으로 예상 했었지만 3 명만 응답했고 마지막 하나는 아직 cURL이 활성화되어 있지 않습니다. 한 가지 생각은 php_info가 마지막 서버에서 비활성화되었다는 것입니다. 그게 효과가 있니? – James
James, php_info는 효과가 없습니다. 그러나 "php_info가 비활성화되었습니다"라는 것은 무엇을 의미합니까? php_info를 표시하는 페이지가 없다는 것을 의미합니까? 그것은 실제로 좋은 것입니다. 누군가가 공개적으로 php_info에 접근 할 수 있도록 서버를 올려 놓아서는 안됩니다. 보안 상 위험 할 수 있습니다. 네 번째 서버가 웹 페이지를 서버 할 수 있다는 것을 확인 했습니까? Apache가 해당 상자에서 제대로 실행되고 있는지 확인하기 위해 방문 할 수있는 테스트 페이지가 있습니까? – Justin