【问题标题】:Extra text comes from shell_exec command when executed from php从 php 执行时,额外的文本来自 shell_exec 命令
【发布时间】:2015-12-16 16:36:14
【问题描述】:

我正在使用 s3cmd 将文件从 AWS 获取到我的 ubuntu 服务器。

s3cmd get s3://bucket/filename newfilename

从 ubuntu 终端运行时运行良好。

但是当我像下面这样从 php 运行时

$query1 = 's3cmd get s3://bucket/filename newfilename';
$q1 = serialize(shell_exec($query1));
$data2 = array( 'data' => $q1);
header('Content-type: application/json');
echo json_encode( $data2 );

它可以工作,但来自 json_encode 的响应与额外的文本连接在一起。

{"data":"s:122:\"File s3:............

什么是 s:122 以及如何删除它。我不是在寻找 sub_string。

【问题讨论】:

  • 为什么要序列化价值? s:122shell_exec($query1) 返回值的长度
  • 如果我没有序列化值,输出为空
  • shell_exec($query1) 返回什么?
  • 文件 s3://bucket/folder/ih0wOlM4f8 保存为“tempmedia/ih0wOlM4f8”(4.3 秒内 4842585 个字节,1090.63 kB/s)
  • 那么什么输出是空的?

标签: php shell ubuntu scripting s3cmd


【解决方案1】:

当您serialize 某个值时 - 在结果字符串中存在值的类型和值本身。 s:122,你问过,说 values 是一个长度为 122string。所以如果你不希望这个字符串出现 - 不要序列化值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 2013-01-01
    • 2018-05-26
    • 2014-10-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多