卷曲命令未执行

时间:2017-11-02 17:15:31

标签: php .htaccess curl

我正在尝试从php脚本运行curl命令但它没有按预期工作。问题出在curl命令或用.htacccess文件编写的url重写规则中。

curl命令文件中的

代码:我只是尝试使用此命令发布数据并期望返回一个数组。

    <?php
     $data=array(
    'product_name' =>'Television',
    'price' => 1000,
    'quantity' => 10,
    'seller' =>'XYZ Traders'
   );
   $url = 'http://localhost/API2/products';
    $ch = curl_init($url);
     curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $response_json = curl_exec($ch);
   curl_close($ch);
   $response=json_decode($response_json, true);
   echo $response;

  ?>

我的.htaccess文件用于url rewritng,这意味着http://localhost/API2/products应该用于CRUD操作。网址规则是:

  RewriteEngine On # Turn on the rewriting engine
  RewriteRule ^products/?$ products.php [NC,L]
  RewriteRule ^products/([0-9]+)/?$ products.php?product_id=$1 [NC,L]

因此,如果您可以帮助找到问题,就像我运行curl命令file.php一样,它不会返回任何内容,也不会执行代码。

1 个答案:

答案 0 :(得分:1)

问题是,当你应该发布一个字符串时,你正试图发布一个数组($ data)。

要解决此问题,请在下面添加URLify功能。

function URLify( $arr, $encode = FALSE ) {

    $fields_string = '';
    foreach( $arr as $key => $value ) {
        if ( $encode ) {
      $key = urlencode( $key );
            $value = urlencode( $value );
        }
        $fields_string .= $key . '=' . $value . '&';
    }
    $fields_string = substr( $fields_string, 0, (strlen($fields_string)-1) );

    return $fields_string;

}

然后添加:

$data = URLify( $data, TRUE );

以上:

$url = 'http://localhost/API2/products';