当在 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/