我在 PHP 脚本中使用 cURL 来测试我的 API。当我尝试使用我的函数来获取数据时,它抛出一个错误
错误:无法连接到alenke.test端口80:连接被拒绝
但是当我在终端中执行它时
curl --ipv4 -v "http://alenke.test/wp-json/chatbot/v1/brand";
它给了我
`Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to alenke.test (127.0.0.1) port 80 (#0)
GET /wp-json/chatbot/v1/brand HTTP/1.1
Host: alenke.test
User-Agent: curl/7.54.0
Accept:
HTTP/1.1 200 OK
Server: nginx/1.15.7
Date: Sun, 01 Sep 2019 16:47:36 GMT
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.3.7
X-Robots-Tag: noindex
Link: <http://alenke.test/wp-json/>; rel="https://api.w.org/"
X-Content-Type-Options: nosniff Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages Access-Control-Allow-Headers: Authorization, Content-Type Allow: GET `
并提供我需要的所有数据,但何时执行此 php 脚本
function callAPI($method, $url, $data){
$curl = curl_init();
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "admin:admin");
// EXECUTE:
$result = curl_exec($curl);
if(!$result){
if (curl_errno($curl)) {
echo 'Error: ' . curl_error($curl);
echo'//;
echo print_r(curl_getinfo($curl));
echo'//;
die("Connection Failure..?");
}
}
curl_close($curl);
return $result;
}
它向我显示了这个错误
错误:无法连接到alenke.test端口80:连接被拒绝
我已将您的代码复制粘贴到我计算机上的文件(test.php)中,并用
<?php .. ?>
块,并在函数后面添加了这样的调用:
$res=callAPI('GET', 'http://myserver/', '');
echo $res;
然后通过php test.php
在命令行启动脚本,得到了预期的结果(我服务器的index.html文件)。
所以无论你做什么都是有效的。首先尝试在命令行中测试它,看看是否安装/启用了必要的模块。如果这种情况有效,请尝试修复网络服务器的配置文件。如果您需要更多帮助,请添加一些有关您的系统的信息(网络服务器、版本、操作系统和任何相关信息)。系统管理员倾向于禁用共享主机上的某些功能(包括curl),也许您的默认配置就是基于此。
我会建议您检查防火墙并检查该 IP 是否正在解析域。
telnet domain 80
telnet ipserver 80