从 php 执行时,额外的文本来自 shell_exec 命令

Extra text comes from shell_exec command when executed from php

我正在使用 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。

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