我是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
我错过了什么吗? 提前致谢。
答案 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;
}
感谢大家的立即回复。