【发布时间】:2021-08-17 06:57:46
【问题描述】:
当我在 macOS 10.13 终端上执行以下命令时:
curl 'https://api.perlego.com/metadata/v2/metadata/books/toc/682348' \
> -XGET \
> -H 'Origin: https://www.perlego.com' \
> -H 'Host: api.perlego.com' \
> -H 'Accept: application/json' \
> -H 'Connection: keep-alive' \
> -H 'Accept-Language: en-sg' \
> -H 'Accept-Encoding: br, gzip, deflate' \
> -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15' \
> -H 'Referer: https://www.perlego.com/book/682348/10-human-how-your-bodys-microbes-hold-the-key-to-health-and-happiness-pdf' --compressed | brotli -d > temp.txt
这是输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 535 0 535 0 0 1433 0 --:--:-- --:--:-- --:--:-- 1430
我看到一个文件 temp.txt 保存到目录中,其中包含我需要的数据(一个 json)。
但是当我通过 PHP 执行这个时:
$comd = <<<EOT
cd "/Users/user/Documents/RU_general"; curl 'https://api.perlego.com/metadata/v2/metadata/books/toc/682348' \
-XGET \
-H 'Origin: https://www.perlego.com' \
-H 'Host: api.perlego.com' \
-H 'Accept: application/json' \
-H 'Connection: keep-alive' \
-H 'Accept-Language: en-sg' \
-H 'Accept-Encoding: br, gzip, deflate' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15' \
-H 'Referer: https://www.perlego.com/book/682348/10-human-how-your-bodys-microbes-hold-the-key-to-health-and-happiness-pdf' --compressed | brotli -d > temp.txt
EOT;
d($comd);
$res = shell_exec($comd);
//***** exec() also results in the same problem
文件仍在创建中,但 temp.txt 文件为空白。
发生了什么,如何获得所需的输出?
【问题讨论】:
标签: php shell command-line