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

标签 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 变量中获取完整输出?

最佳答案

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

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

考虑使用 PHP 的内置 cURL通过

实现此选项的选项
CURLOPT_POSTFIELDS

关于php - shell_exec 的输出被截断为 100 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052760/

相关文章:

linux - 用于在特定时间间隔运行两个命令的 Bash 脚本

linux - 使用 bash 识别多种文件类型

linux - 用于在文本文件中查找模式并返回整行的 bash 脚本

bash - 在 bash 中返回陷阱后如何重新提示?

linux - 查找文件并将完整路径导出到列表

php - jQuery JSON 和 PHP 关联数组数组问题

php - MySQL:如何在 WHERE 子句中的两个不同值之间使用 OR

php - 使用 php 获取所选选项的文本

PHP:SQL 中的记录未更新

linux - 从sourceforge下载最新版本