无法使用变量执行shell_exec()

时间:2016-02-15 19:03:23

标签: php shell server shell-exec

我正在尝试使用从客户端传递AJAX的变量来运行shell_exec()。

此代码导致错误(输入文件不存在!):

$searched_image = escapeshellarg("/home/XXX/XXX/XXX/XXX/XXX/sp_dom1.jpg");
$old_path = getcwd();
chdir('../elevation/source_code/altitudes_system/');
$altitudes_system_result = shell_exec('./predict_altitude.sh -i "{$searched_image}" -p basic -o 0');
chdir($old_path);

但是当我用/home/XXX/XXX/XXX/XXX/XXX/sp_dom1.jpg替换shell_exec(...)中的“{$ searching_image}”时,代码效果很好:

$old_path = getcwd();
chdir('../elevation/source_code/altitudes_system/');
$altitudes_system_result = shell_exec('./predict_altitude.sh -i /home/XXX/XXX/XXX/XXX/XXX/sp_dom1.jpg -p basic -o 0');
chdir($old_path);

难道你不知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

你写道:

'./predict_altitude.sh -i "{$searched_image}" -p basic -o 0'

不评估内部单引号字符串变量。

你可以使用它,而不是:

"./predict_altitude.sh -i '{$searched_image}' -p basic -o 0"

或 - 为了避免不可预测的评估 - 这:

$cmd = './predict_altitude.sh -i \''.$searched_image.'\' -p basic -o 0';
shell_exec( $cmd );