3

在 shell 中运行以下命令时,

curl -F file=@filename http://192.168.0.1

产生以下输出:

Accuracy = 0% (0/1) (classification)
Accuracy = 0% (0/1) (classification)
Accuracy = 0% (0/1) (classification)
Accuracy = 0% (0/1) (classification)
verdict = success!

当我在 php 中运行它时,要么使用shell_exec(),要么使用exec()反引号运算符,

$verdict = `curl -F file=@$filename $url`;

我得到以下输出:

Accuracy = 0% (0/1) (classification)
Accuracy = 0% (0/1) (classification)
Accuracy = 0% (0/1) (class

输出被截断为正好 100 个字符。我一生都无法弄清楚为什么会这样。为什么会这样,如何在 php 变量中获得完整的输出?

4

2 回答 2

0

您可以避免通过终端执行 cURL 操作,因为

  • 很可能不是每个服务器都支持通过代码执行命令。
  • 很可能在生产中启用了安全模式。
  • 并非每个在终端中执行上述命令的用户都有执行权限。
  • 不是每个执行上述命令的用户都没有指定命令的完整路径(如 /usr/bin/curl)

考虑使用 PHP 的内置cURL选项来实现这个

CURLOPT_POSTFIELDS
于 2013-06-12T06:09:20.250 回答
0

我遇到过非常相似的问题。我试图计算给定进程的实例数,并且返回的行ps aux总是在第 80 位被截断。我不确定我的建议是否能解决所讨论的问题,因为您确认获得了 100 个字符。我添加COLUMNS=9999到命令以扩展输出。在您的情况下,这将如下所示:

COLUMNS=9999 curl -F file=@filename http://192.168.0.1
于 2020-12-12T06:40:07.347 回答