早上好,
我无法使用我想传递给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()
。
谢谢
答案 0 :(得分:2)
有关功能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" ;