【问题标题】:Php curl error Url not found on this server在此服务器上找不到 PHP curl 错误 Url
【发布时间】:2013-09-19 14:51:12
【问题描述】:

我正在研究核心 php。 我通过 curl 请求一个 URL。这在我的开发服务器上工作,但同样的事情在实时服务器上不起作用。

以下是我的代码:


$url = "http://www.streamatemodels.com/login.php";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);

curl_setopt($ch, CURLOPT_AUTOREFERER, true); 

curl_setopt($ch, CURLOPT_TIMEOUT, 15);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, 'submitted=1&g=&sausr='.urlencode('username').'&sapwd='.urlencode('password').'');

$result = curl_exec($ch); 
$error = curl_errno($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);  
print_r($result);

如果有人有解决方案,请帮助我。


更新

我用新的用户名和密码检查了这个,但同样的事情发生了。它可以在我的开发服务器上运行,但不能在实时和本地主机上运行。

【问题讨论】:

  • 您的两个环境是否都使用相同版本的 PHP 和 libcurl?查看cURL requirements for PHP
  • 您需要比“它不起作用”更具体。什么不工作?您遇到了什么错误?
  • 您应该输出您的 url 并验证它是否相同,如果是并且我假设您收到 404 错误,请注意服务器可能阻止了您的生产服务器而不是您的开发服务器。这是你自己的服务器吗?如果它是第 3 方,它可能只是因为你发出过多请求而阻止了你,有时我犯了这个错误,并且我的应用程序中不需要的循环表现得像 DOS 攻击。

标签: php url curl


【解决方案1】:

下面一行:

curl_setopt($ch, CURLOPT_POSTFIELDS, 'submitted=1&g=&sausr='.urlencode('username').'&sapwd='.urlencode('password').'');

应该改为:

curl_setopt($ch, CURLOPT_POSTFIELDS, 'submitted=1&g=&sausr='.urlencode($username).'&sapwd='.urlencode($password).'');

如果仍然不起作用,请尝试在 curl_setopt 之外创建查询字符串:

 $params = 'submitted=1&g=&sausr='.urlencode($username).'&sapwd='.urlencode($password).'';
 curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

另一个建议:最好使用http_build_query($params)

更新

我有时间检查代码,它在我的本地主机上运行良好(意思是:检查您的用户名/密码!):

【讨论】:

  • 我认为他混淆了实际值,而不是指变量。在任何情况下,您都在使用单引号——如果它们是变量,它们将不会被解释。
  • @AlexHowansky 不错 - 已修复。你可能是对的 - 这就是为什么我添加了另外几件事他可以尝试;)
  • 感谢您的快速回复。我按照您告诉的步骤进行操作,但同样无法正常工作。
猜你喜欢
  • 1970-01-01
  • 2014-10-15
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2021-04-11
相关资源
最近更新 更多