如果我在命令行中运行这个命令(在我的Mac OS X):一个奇怪的,但可能是简单的,了shell_exec问题
echo -n "hello" > foo-cmd.txt
我得到预期的结果,即包含文件foo-cmd.txt
“hello
”最后没有任何换行符。
但是,如果我运行此PHP代码:
<?php
shell_exec("echo -n \"hello\" > foo-php.txt");
?>
我得到一个文件foo-php.txt
包含文本“-n hello
”跟着一个新行!换句话说,参数-n
作为输出潜入,而不是被视为参数!
我该如何解决这个问题?
你如何弄清楚(从系统到系统,还是从一个PHP版本到另一个版本)shell_exec是否正在使用它自己的特定命令的内置版本? – Enchilada 2012-07-05 11:14:47
@Enchilada它不是'shell_exec',它有问题 - shell_exec调用的系统shell具有内置插件。简单的答案是,不要使用'shell_exec'来执行几行PHP代码。 – Alnitak 2012-07-05 11:16:23