Php - 系统函数 - / usr / bin / echo Hello:没有这样的文件或目录

时间:2014-11-04 07:23:46

标签: php linux

我是PhP的新手 当我在php中使用System函数运行linux终端命令时,我在error_log中收到错误。
这是我的代码:

if(isset($_POST['submit_button']))
{
    $name=$_POST['User_name']; // here $name contains 'John'
    echo '<pre>';

    $command="/usr/bin/echo $name";
    $command1="'".$command."'";
    $last_line = system($command1, $retval);

    echo '</pre>
    <hr />Last line of the output: ' . $last_line . '
    <hr />Return value: ' . $retval;        
 }

当我运行此代码时,我收到以下错误:

in browser - giving code : 127  


in /var/log/httpd/error_log file - sh: /usr/bin/echo John: No such file or directory  

我错过了什么吗? 提前致谢。

3 个答案:

答案 0 :(得分:0)

只使用echo,而不是使用/ usr / bin / echo
更改命令变量声明如下:

$command="echo $name";

答案 1 :(得分:0)

$command="/usr/bin/echo $name";

您只想将$ name变量的值添加到路径中吗?如果是这样,只需将其写为

$command="/usr/bin/$name";

php将在double qoutes之间解析字符串中的变量,请参阅string.parsing

答案 2 :(得分:0)

最后,我在escapeshellarg()的帮助下解决了这个错误 这是更新的代码..

if(isset($_POST['submit_button']))
{
    $name=$_POST['User_name']; // here $name contains 'John'
    echo '<pre>';

    $last_line = system('/usr/bin/echo'.escapeshellarg($name));  
                                      // here escapeshellarg() does the trick

    echo '</pre>
    <hr />Last line of the output: ' . $last_line . '
    <hr />Return value: ' . $retval;  
}  

感谢大家的立即回复。