我有一个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,但这样做。
答案 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\"");
然后发送它。