CURL และ SOCKET Erroe

ผมใช้บริการ VPS ครับ ผมต้องการเชื่อมต่อ API เพื่อส่ง SMS ครับ

ทำไมมันแจ้งว่า couldn’t connect to host

ผมก็ติดตั้ง CURL แล้วนะครับ หรือว่าติดตั้งไม่สมบูรณ์ครับ

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_USERAGENT, $agent);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);

$result = curl_exec ($ch);

echo curl_error($ch);

curl_close ($ch);


ผมเลยลองมาใช้ SOCKET แทนมับก็แจ้งว่า

Warning: fsockopen() [function.fsockopen]: unable to connect to www.xxxxxxxxxx.com:80 (No route to host)

$fp = fsockopen($host,80);

         if (!$fp) {

            echo "<script> alert('socket error'); window.history.go(-1); </script>
";

            exit();

         }

         fputs($fp, "POST $path HTTP/1.1
");

         fputs($fp, "Host: $host
");

         fputs($fp, "Referer: $referer
");

         fputs($fp, "Content-type: application/x-www-form-urlencoded
");

         fputs($fp, "Content-length: ".strlen($data_to_send)."
");

         fputs($fp, "Connection: close

");

         fputs($fp, "$data_to_send
");

         while(!feof($fp)) {

             $res .= fgets($fp, 128);

         }

         fclose($fp);

ผมต้องแก้ไขหรือติดตั้งอะไรเพิ่มเติมครับ

ผมตั้งค่าที่ php.ini

allow_url_fopen = on

extension=php_curl.dll

extension=php_openssl.dll

extension=php_sockets.dll

ก็เปิดใช้งานแล้ว แต่ทำไม…

ขอคำแนะนำด้วยครับ ขอบคุณมากครับ

ลอง ssh เข้าไป ping โดเมนนั้นได้มั้ยครับ

unroute to host

ถ้าไม่ใช่หา ip ไม่เจอ ก็ไม่สามารถเชื่อมต่อได้ อาจจะติด firewall

ping แล้วครับ

[root@www ~]# ping www.thaibulksms.com

PING www.thaibulksms.com (61.19.250.108) 56(84) bytes of data.

From www.mydomain.com (61.19.250.224) icmp_seq=2 Destination Host Unreachable

ต้องแก้ไขยังไงครับ

ยังรอคำชีแนะจากกูรู อยู่นะครับ

ลอง telnet เข้า port 80 ดูครับ

แบบนี้น่าจะติด firewall

ลองปิด firewall เครื่องคุณดูครับ

/etc/init.d/iptables stop

เครื่องมันติดต่อหากันไม่ได้ครับ ถ้าปิด firewall แล้วไม่หาย แจ้ง CAT เลยครับ เคยเจอเหมือนกันว่า IP class เดียวกัน แต่อยู่คนละตู้ มันวิ่งหากันไม่ได้

ปิด firewall แล้ว ก็ยังไม่ได้ครับ

ลอง telnet เข้า port 80 ได้ตามนี้ครับ



[root@www ~]# telnet www.mydomain.com 80

Trying 61.19.250.224...

Connected to www.mydomain.com (61.19.250.224).

Escape character is '^]'.

GET /index.htm HTTP/1.1

host: www.mydomain.com

<line feed>



HTTP/1.1 400 Bad Request

Date: Sat, 17 Mar 2012 14:49:03 GMT

Server: Apache/2

Content-Length: 380

Connection: close

Content-Type: text/html; charset=iso-8859-1



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>400 Bad Request</title>

</head><body>

<h1>Bad Request</h1>



Your browser sent a request that this server could not understand.


Request header field is missing ':' separator.


<pre>

<line feed></pre>

</p>

<hr>

<address>Apache/2 Server at www.mydomain.com Port 80</address>

</body></html>

Connection closed by foreign host.

[root@www ~]#


แต่ทำไมผมยังเชื่อมต่อ API กับ DA ได้ปกติละครับ ไม่เข้าใจ

DA กับ www.thaibulksms.com

อยู่เครื่องเดียวกันหรือเปล่าครับ

โทษทีครับ บอกไม่ละเอียด หมายถึงให้ใช้ vps แล้ว telnet เข้า www.thaibulksms.com ครับ

เพื่อดูว่าติดต่อได้หรือไม่

ถ้าติดต่อไม่ได้ก็ไปดูเรื่อง network เลยครับ

DA กับ www.thaibulksms.com คนละเคื่องครับ

โทษทีครับผมลืมไปว่า DA มันอยู่เครื่องเดียวกันกับ www.mydomain.com

ผมก็ไม่ค่อยรู้เรื่องครับ รู้งู ๆ ปลา ๆ

ถ้ามันยากเช่นนี้ สงสัยต้องย้ายบ้านซะแล้ว…เฮ้อ…

ขอขอบคุณทุก ๆ ความช่วยเหลือครับ

คุ้นๆว่าของ thaibulksms เขา block ip ไว้นะครับ

ใครจะเชื่อมต่อ API ต้องแจ้ง IP ไปให้เขาเปิดใน firewall ให้ก่อน

ลองแจ้งให้ cat เขาเช็คให้ดีกว่าครับ ไม่ใช่ปัญหาของ cat ก็ปลายทางอาจจะบล็อกไอพีของคุณไว้

ง่ายสุดคือให้เจ้าของ vps ตรวจสอบให้ครับ

ผมได้แจ้งไปยังผู้ให้บริการแล้ว ได้รับความช่วยเหลือเป็นอย่างดีครับ

ตอนนี้ใช้งานได้แล้วครับ

Support เข้าแก้ตัวอัพเดต ไลเซน DA ให้ครับ (แค่นี้เองเหรอ เอาซะเบลอไปหลายวัน 555)

ขอขอบคุณทุก ๆ ท่านอีกครั้ง ขอบคุณครับ