是否可以将CURL命令转换为PHP?

时间:2018-04-08 16:03:40

标签: php curl

我有一个Web应用程序,我需要将一个CURL命令从HTTP URL发送到在Ubuntu上运行的应用程序。

curl命令是这样的:

curl -X POST --data-binary @/home/User/Pastec_FYP/Currency_Test_Images/Test_TenEuro.jpg http://127.0.0.1:4212/index/searcher

该命令从以下位置获取图像:

@/home/User/Pastec_FYP/Currency_Test_Images/Test_TenEuro.jpg

它正在搜索

中的索引
http://127.0.0.1:4212/index/searcher

我需要能够将其转换为PHP。

修改

这是我到目前为止所得到的,但它仍在说image_not_decoded

$ch = curl_init();

$post = array(
    "file" => "@" .realpath("/home/User/Pastec_FYP/Currency_Test_Images/Test_TenEuro.jpg")
 );


curl_setopt_array(
    $ch, array( 
    CURLOPT_URL => 'http://127.0.0.1:4212/index/searcher',
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post),
    CURLOPT_RETURNTRANSFER => true
));

$output = curl_exec($ch);
echo $output;
curl_close($ch);

从过去在Ubuntu中使用物理Curl命令时,它用于在Image的路径不正确时返回该错误,但我知道它正确,因为它在命令行中工作。

那么我应该改变什么呢?

其他修改 (要使其正常运行)

我按照我想要的方式工作,但可能比需要更长时间,但它确实有效。我用我想要执行的Curl命令写了一个CurlCommand.sh,然后从批处理脚本(.sh)中调用CallCurlCommand.bat文件,打开Ubuntu并将CurlCommand.sh插入其中。然后使用PHP调用批处理文件(CallCurlCommand.bat)。

CurlCommand.sh

curl -X POST --data-binary '@/home/User/Pastec_FYP/Currency_Test_Images/Test_FiveEuro.jpg' 'http://localhost:4212/index/searcher'

CallCurlCommand.bat

C:\Users\User\AppData\Local\Microsoft\WindowsApps\ubuntu.exe< C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\User\Pastec_FYP\CurlCommand.sh

PHP

exec('CallCurlCommand.bat');

我仍然希望直接转换为PHP,但这样做。

1 个答案:

答案 0 :(得分:1)

看起来你有点特殊的系统 - 你似乎在windows上运行你的服务器,它有ubuntu作为子系统和curl以及你发布的文件。

如果要直接从PHP服务器运行它,可以在Windows上安装curl。一种方法是从https://curl.haxx.se/download.html下载卷曲的Win32二进制文件。之后你应该能够做类似

的事情
$curlpath = 'C:\path\to\curl.exe';
$filepath = '/home/User/FYP_Pastec/Currency_Test/Test_FiveEuro01.jpg';
$url = 'http://localhost:4212/index/searcher';
exec("$curlpath -X POST --data-binary \"@$filepath\" \"$url\"");

然后发送它。