php-在exec()中转义php变量

时间:2018-11-23 06:08:49

标签: php

早上好,

我无法使用我想传递给exec()的变量对字符串进行转义。这是字符串:

$send_telemetry = exec ( 'echo "Temp 1="'.$temp_1[0].'" Pressure 1="'.$pressure_1[0].'" Flow 1 ="'.$flow_1[0].'" | mutt -s "Telemetry values for AREA 11C" telemetry@mymail.com' ) ;
echo "$send_telemetry" ;

我以前曾做过这项工作,但是一些急切的新手技术人员认为更改代码是一个聪明的主意,他最终把代码弄得一团糟。我知道shell_exec(),但我更喜欢exec()

谢谢

1 个答案:

答案 0 :(得分:2)

来自PHP网站的

有关功能escapeshellarg

的信息
  

escapeshellarg()在字符串周围添加单引号,并使用引号/转义符   任何现有的单引号都允许您将字符串直接传递给   shell函数并将其视为单个安全参数。   此函数应用于将各个参数转义给shell   功能来自用户输入。 Shell函数包括exec(),   system()和反引号运算符。

所以您可能应该做的是转义要传递给命令的所有变量,就像这样...

$send_telemetry = exec ( 'echo "Temp 1=" ' . escapeshellarg($temp_1[0]) . ' "Pressure 1=" ' . escapeshellarg($pressure_1[0]) . ' "Flow 1 =" ' . escapeshellarg($flow_1[0]) . ' " | mutt -s "Telemetry values for AREA 11C" telemetry@mymail.com' ) ;
echo "$send_telemetry" ;