2012-07-05 90 views
0

如果我在命令行中運行這個命令(在我的Mac OS X):一個奇怪的,但可能是簡單的,了shell_exec問題

echo -n "hello" > foo-cmd.txt 

我得到預期的結果,即包含文件foo-cmd.txthello」最後沒有任何換行符。

但是,如果我運行此PHP代碼:

<?php 
shell_exec("echo -n \"hello\" > foo-php.txt"); 
?> 

我得到一個文件foo-php.txt包含文本「-n hello」跟着一個新行!換句話說,參數-n作爲輸出潛入,而不是被視爲參數!

我該如何解決這個問題?

回答

1

你的命令使用shell的內置版本的echo不支持-n選項。

嘗試/bin/echo

+0

你如何弄清楚(從系統到系統,還是從一個PHP版本到另一個版本)shell_exec是否正在使用它自己的特定命令的內置版本? – Enchilada 2012-07-05 11:14:47

+0

@Enchilada它不是'shell_exec',它有問題 - shell_exec調用的系統shell具有內置插件。簡單的答案是,不要使用'shell_exec'來執行幾行PHP代碼。 – Alnitak 2012-07-05 11:16:23

0

試試這個:

shell_exec("echo\ -n \"hello\" > foo-php.txt"); 
+0

然後我得到「sh:echo -n:command not found」。 – Enchilada 2012-07-05 10:54:05