當嘗試使用php cURL庫在端口4321上向localhost發出cURL請求時,我得到了一個權限被拒絕的錯誤。這對希望對某人而言非常容易或明顯誰之前遇到過這個問題。php cURL到localhost返回在開放端口上被拒絕的權限
我能夠從局域網上的另一個系統向生產服務器發出相同的cURL請求。例如,如果在局域網上的另一個系統上,我使用以下功能發出請求,其中$host='http://192.168.1.100:4321'
然後一切正常。如果我的系統本身,其中$host='http://localhost:4321'
或$host='http://127.0.0.1:4321'
或$host='::1:4321'
然後我得到「權限被拒絕」
我寫了我的要求很簡單函數的捲曲的錯誤上運行是:
function makeRequest($host,$data){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $host);
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = json_decode(curl_exec($ch),true);
if(!empty(curl_error($ch))){
$result = print_r(curl_error($ch).' - '.$host);
}
curl_close($ch);
return $result;
}
該系統是一個centos 7服務器。運行firewall-cmd --list-all
顯示了我的開放端口
ports: 443/tcp 80/tcp 4321/tcp
如果你有一些想法,或者需要我來檢查的設置不要猶豫,問。
編輯 hosts文件看起來像
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
EDIT2
當我使用命令行卷曲對同一端口萬物甦醒下車。
/]$ curl -v localhost:4321
* About to connect() to localhost port 4321 (#0)
* Trying ::1...
* Connected to localhost (::1) port 4321 (#0)
> GET/HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:4321
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: no-cache, no-store, must-revalidate
< Content-Length: 774....
有幾個建議是1)檢查你的'hosts'文件,看看'localhost'是否映射到'127.0.0.1',如果沒有,添加這個條目,以及2)從'curl'運行命令行使用'-v'開關檢查完整輸出並獲得更好的洞察力。如果您在命令行上運行curl,請考慮在此處傾銷輸出,以便我們可以看到發生了什麼。 –
注意到你的第一個(成功的)嘗試在它前面有'http://',而失敗的沒有。這是一個錯字嗎? cURL需要在http(s)上運行 – apokryfos
這是一種錯字。我先用'http://'嘗試,然後再用它。 –