我正在开发一个使用cURL将数据发布到远程服务器的wordpress插件。 这可以在最大的网站上正常工作,但在一些网站上,它只是出现了一个错误访问被拒绝。使用代理/防火墙从服务器使用cURL发送到远程服务器
[headers] => Array
(
[server] => squid/3.3.8
[mime-version] => 1.0
[date] => Tue, 31 Mar 2015 07:32:51 GMT
[content-type] => text/html
[content-length] => 3406
[x-squid-error] => ERR_ACCESS_DENIED 0
[vary] => Accept-Language
[content-language] => en
[x-cache] => MISS from hproxy2.world4you.com
[x-cache-lookup] => NONE from hproxy2.world4you.com:3128
[via] => 1.1 hproxy2.world4you.com (squid/3.3.8)
[connection] => close
)
以上是我正在创建的响应。
下面是我使用
function testpost($ac,$d_name,$an,$data) {
$fields = '';
foreach ($data as $key => $value) {
$fields .= $key . '=' . $value . '&';
}
rtrim($fields, '&');
$post = curl_init();
curl_setopt($post, CURLOPT_RETURNTRANSFER,true);
curl_setopt($post, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($post, CURLOPT_URL, $ac);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($post, CURLOPT_SSL_VERIFYHOST, 2);
$result = curl_exec($post);
echo "<pre>";
print_r($result);
echo "</pre>";
}
而且,有些服务器就可以继续执行,不返回任何代码。对于这些无法弄清楚什么是问题,甚至无法向用户显示一些错误消息,因为它不会返回任何内容。
例如 如果我在abc.com上安装插件并尝试使用cURL到xyz.com/test.php进行POST,请在test.php中编写代码以将数据写入文本文件以检查abc.com的cURL请求是或者不在xyz.com上。但它没有写入任何文本文件意味着请求没有从abc.com到达xyz.com。在这个我没有得到任何回应,它在很长一段时间继续在abc.com上执行。
所以,我需要找出阻止你的要求是怎么产生这个问题,我该怎么员额从abc.com数据xyz.com
我一定要改变我的插件来获得服务器的代理服务器设置(在其上运行的插件)。例如curl_setopt($ ch,CURLOPT_PROXYPORT,$ proxyPort); curl_setopt($ ch,CURLOPT_PROXYTYPE,'HTTP'); curl_setopt($ ch,CURLOPT_PROXY,$ proxyIp); curl_setopt($ ch,CURLOPT_PROXYUSERPWD,$ loginpassw); – user2231113 2015-04-06 07:00:31