簡體   English   中英

cURL連接被拒絕

[英]cURL connection refused

我正在嘗試使用以下代碼從家里讀取Philips Hue燈的信息:

$fp = fopen(dirname(__FILE__).'/errorlog.txt', 'a');

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://119.119.20.20:2827/api/Js82jH2lao-pAiws89S9A-k9hHsukw72/lights',
    CURLOPT_VERBOSE => true,
    CURLOPT_STDERR => $fp
));
$resp = curl_exec($ch);
curl_close($ch);
print_r($resp);

它什么也不返回。 查看errorlog.txt它說:

* About to connect() to 119.119.20.20 port 2827 (#0)
*   Trying 119.119.20.20... * Connection refused
* couldn't connect to host
* Closing connection #0

我可以通過hurl.it這樣的網站讀取數據並更改燈光設置,這告訴我我已經正確設置了路由器。 我服務器上的allow_url_fopen已打開。 我使用curl是因為我也想執行PUT請求。 我不想使用一個庫來簡單地打開和關閉燈。

我該如何進行這項工作?

編輯以澄清這一點:我正在使用外部服務器來托管php,該php可以與我的Philips Hue橋接器進行通訊。 您可以假設我正確轉發了我的端口。 沒有VPN。

我的猜測是用戶/權限問題。

www-data / http用戶是否有權在您的服務器上使用curl? 所有php腳本都將以該用戶身份執行,因此,如果沒有正確的權限curl,該錯誤將失敗。

哪個用戶創建了php腳本? 您是否更改了文件許可權以允許其他用戶正確的特權?

說了這么多,您就說過您不想將庫用於如此簡單的事情,為什么還要麻煩一下curl? file_get_contents可以直接進行PUT,POST等操作。

從網橋獲取狀態作為關聯數組:

$result = json_decode(file_get_contents('http://119.119.20.20:2827/api/Js82jH2lao-pAiws89S9A-k9hHsukw72/lights'), true);

通過PUT請求關閉所有燈:

$data = '{"on":false}';
$result = file_get_contents('http://119.119.20.20:2827/api/Js82jH2lao-pAiws89S9A-k9hHsukw72/groups/0/action', null, stream_context_create(array(
'http' => array(
'method' => 'PUT',
'header' => 'Content-Type: application/json' . "\r\n"
. 'Content-Length: ' . strlen($data) . "\r\n",
'content' => $data
),
)));

剛剛在我的Hue設置上嘗試過。 為我工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM