[英]Run curl inside php
我想在PHP
执行Curl
代码。
curl -X POST 'https://api.sightengine.com/1.0/check.json' \
-F 'api_user=1********5' \
-F 'api_secret=q**************Q' \
-F 'media=@/full/path/to/image.jpg' \
-F 'models=nudity'
上面的代码有四个参数传递给api。 下面我尝试执行的PHP代码:
function image()
{
$body_data = http_build_query(array('api_user' => 1********5,
'api_secret' => 'q**************Q',
'media' => $_FILES['image']['name'],
'models' => 'nudity'));
// Configure cURL
$image_curl = curl_init();
curl_setopt($image_curl, CURLOPT_URL, "https://api.sightengine.com/1.0/check.json");
curl_setopt($image_curl, CURLOPT_POST, true); // Use POST
curl_setopt($image_curl, CURLOPT_POSTFIELDS, $body_data); // Setup post body
curl_setopt($image_curl, CURLOPT_RETURNTRANSFER, true); // Receive server response
// Execute request and read responce
$session_response = curl_exec($image_curl);
$response = json_decode($session_response);
print_r($response);
}
响应:
stdClass对象([状态] =>失败[请求] => stdClass对象([id] => req_2365jHPuLcC6Bydh7WNd7 [时间戳] => 1512542730.57 [操作] => 0)[错误] => stdClass对象([类型] =>参数错误[代码] => 4 [消息] =>未指定任何介质))
现在问题出在media
和models
参数上。
我不确定media
参数的文件路径是否存在问题。 我是否要在路径前面添加一个@
。
我在$body_data
数组中定义了所有参数,并将它们正确传递给CURLOPT_URL
。
请帮我解决这个问题。 当我在POSTMAN
尝试此POSTMAN
,效果很好。 提前致谢。
您不需要使用http_build_query
。
支持PHP 5.5、5.6等通过@
符号,但在PHP 7中已弃用。现在我们可以使用https://secure.php.net/manual/en/class.curlfile.php 。
$body_data = array(
'api_user' => '3454',
'api_secret' => 'q**************Q',
'models' => 'nudity'
);
$body_data['media'] = new CurlFile(realpath('file.jpg'));
// Configure cURL
$image_curl = curl_init();
curl_setopt($image_curl, CURLOPT_URL, "https://api.sightengine.com/1.0/check.json");
curl_setopt($image_curl, CURLOPT_POST, true); // Use POST
curl_setopt($image_curl, CURLOPT_POSTFIELDS, $body_data); // Setup post body
curl_setopt($image_curl, CURLOPT_RETURNTRANSFER, true); // Receive server response
// Execute request and read responce
$session_response = curl_exec($image_curl);
$response = json_decode($session_response);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.