Php 一个奇怪但可能很简单的shell_exec问题
如果我在命令行上运行此命令(在Mac OS X上): 我得到了预期的结果,即一个文件Php 一个奇怪但可能很简单的shell_exec问题,php,Php,如果我在命令行上运行此命令(在Mac OS X上): 我得到了预期的结果,即一个文件foo cmd.txt包含“hello”,末尾没有任何换行符 但是,如果我运行以下PHP代码: <?php shell_exec("echo -n \"hello\" > foo-php.txt"); ?> 我得到一个文件foo php.txt,其中包含文本“-n hello”,后跟一个新行!换句话说,参数-n作为输出潜入,而不是作为参数处理 如何解决此问题?尝试以下方法: shell_e
foo cmd.txt
包含“hello
”,末尾没有任何换行符
但是,如果我运行以下PHP代码:
<?php
shell_exec("echo -n \"hello\" > foo-php.txt");
?>
我得到一个文件foo php.txt
,其中包含文本“-n hello
”,后跟一个新行!换句话说,参数-n
作为输出潜入,而不是作为参数处理
如何解决此问题?尝试以下方法:
shell_exec("echo\ -n \"hello\" > foo-php.txt");
您的命令使用的是shell内置版本的
echo
,它不支持-n
选项
试试
/bin/echo
。你是如何理解的(从一个系统到另一个系统,或者从一个PHP版本到另一个PHP版本)shell_exec是否使用其自己的特定命令的内置版本?@Enchilada问题不在于shell_exec
,而是shell_exec
调用的系统外壳具有内置版本。简单的答案是,不要使用shell\u exec
来完成一些可以用几行PHP代码轻松完成的事情。
shell_exec("echo\ -n \"hello\" > foo-php.txt");