shell 命令,带有来自 php 的选项
shell command with options from php
我有这个代码:
$codif ="file --mime-encoding -b inputfile.txt";
$codif = shell_exec($codif);
$encode = "iconv --from-code=$codif --to-code=UTF-8 --output=tempfile.txt inputfile.txt";
我试过了
shell_exec($encode); //1
exec($encode); //2
system($encode); //3
我有这个只是为了看看生成的命令是什么:
echo $encode;
输出如下:
iconv --from-code=iso-8859-1 --to-code=UTF-8 --output=tempfile.txt inputfile.txt
问题是,使用三种执行命令的形式中的任何一种,我都会遇到下一个错误:
sh: 2: --to-code=UTF-8: not found
在 shell 处执行输出命令时效果很好。
我也尝试过将 --to-code=UTF-8
更改为 -t UTF-8
,结果相同。
所以问题是,我做错了什么以及如何解决?谢谢!
尝试将您的 $encode
变量更改为:
iconv -f $codif -t UTF-8 --output=tempfile.txt inputfile.txt
输出如下内容:
iconv -f iso-8859-1 -t UTF-8 --output=tempfile.txt inputfile.txt
你在 $codif 变量的末尾换了一行,这把事情搞砸了。
这需要以某种方式去除。
例如,您可以试试这个:
$codif ="file --mime-encoding -b inputfile.txt|tr -d '\n'";
$codif = shell_exec($codif);
file
命令的管道输出到 tr -d "\n"
将删除新行。您当然也可以在 php 代码中删除它。
我有这个代码:
$codif ="file --mime-encoding -b inputfile.txt";
$codif = shell_exec($codif);
$encode = "iconv --from-code=$codif --to-code=UTF-8 --output=tempfile.txt inputfile.txt";
我试过了
shell_exec($encode); //1
exec($encode); //2
system($encode); //3
我有这个只是为了看看生成的命令是什么:
echo $encode;
输出如下:
iconv --from-code=iso-8859-1 --to-code=UTF-8 --output=tempfile.txt inputfile.txt
问题是,使用三种执行命令的形式中的任何一种,我都会遇到下一个错误:
sh: 2: --to-code=UTF-8: not found
在 shell 处执行输出命令时效果很好。
我也尝试过将 --to-code=UTF-8
更改为 -t UTF-8
,结果相同。
所以问题是,我做错了什么以及如何解决?谢谢!
尝试将您的 $encode
变量更改为:
iconv -f $codif -t UTF-8 --output=tempfile.txt inputfile.txt
输出如下内容:
iconv -f iso-8859-1 -t UTF-8 --output=tempfile.txt inputfile.txt
你在 $codif 变量的末尾换了一行,这把事情搞砸了。 这需要以某种方式去除。 例如,您可以试试这个:
$codif ="file --mime-encoding -b inputfile.txt|tr -d '\n'";
$codif = shell_exec($codif);
file
命令的管道输出到 tr -d "\n"
将删除新行。您当然也可以在 php 代码中删除它。