我的命令行代码无法使用 cURL 运行

My command line code doesn't run using cURL

提问人:Onur 提问时间:10/11/2012 最后编辑:ExpeditoOnur 更新时间:6/4/2013 访问量:398

问:

我的问题是我无法在命令行上运行PHP中的cURL。我的代码是这样的:

public function updateSolrProfilData($arrData)
{
  $solrClientOptionsCommit = $this->solrClientOptionsYazProfilCommit;

  $urlCommit = "http://" . $solrClientOptionsCommit['hostname'] . ":" . $solrClientOptionsCommit['port'] . "/" . $solrClientOptionsCommit['path'] . "/update?stream.body=%3Ccommit/%3E -H \"Content-Type: text/xml\" --data-binary '<add><doc>";

  foreach ($arrData as $firmaField => $firmaValue)
  {
    if ( ! is_array($firmaValue))
    {
      $urlCommit = $urlCommit . '<field name="' . $firmaField . '">' . $firmaValue . '</field>';
    }
    else
    {
      foreach ($firmaValue as $firmaField2 => $firmaValue2)
      {
        if ('' != $firmaValue2)
        {
          $urlCommit = $urlCommit . '<field name="' . $firmaField . '">' . $firmaValue2 . "</field>";
        }
      }
    }
  }

  $urlCommit .= "</doc></add>'";

  $urlCommit = htmlspecialchars($urlCommit);

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_POST, false);
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_URL, $urlCommit);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  $data = curl_exec($ch);
  curl_close($ch);
}

当我在命令行上运行它时,它可以工作,但在使用 cURL 和 PHP shell_exec 函数时它不起作用。这是怎么回事?

php codeigniter 命令行 cmd shell-exec

评论

0赞 Nemoden 10/11/2012
你能发布应该在控制台中工作的确切命令吗?以及此命令调用生成的内容
0赞 Nemoden 10/11/2012
而且,我差点忘了,你用的是什么操作系统?
0赞 Soroush Khosravi 10/11/2012
它怎么不起作用?是否有任何错误或只是失败?
4赞 Onur 10/11/2012
好的,我找到了解决方案。这是因为 htmlspecialchars。我删除了它,现在它可以工作了。
7赞 swatkins 10/11/2012
@OnurGöker - 当你有机会(以及 StackOverflow 的权限)时,请添加你的解决方案作为答案并接受它。这样,这个查询就不会再出现在“未回答”的查询中。谢谢,欢迎来到SO!

答: 暂无答案