shell_exec的输出被截断为100个字符

时间:2013-06-11 20:04:03

标签: php bash shell curl shell-exec

在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变量中获得完整输出?

2 个答案:

答案 0 :(得分:0)

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

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

考虑使用PHP的内置cURL选项通过

实现此功能
CURLOPT_POSTFIELDS

答案 1 :(得分:0)

我遇到了非常相似的问题。我正在尝试计算的实例数 给定的过程和ps aux返回的行总是在位置80处被截断。由于您确认获得100个字符,因此我不确定我的建议是否可以解决所讨论的问题。我在命令中添加了COLUMNS=9999来扩展输出。就您而言,它看起来像:

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