gpt4 book ai didi

PHP 将带撇号的字符串传递给 shell_exec

转载 作者:行者123 更新时间:2023-11-29 04:41:04 29 4
gpt4 key购买 nike

我试图通过 PHP shell_exec 将一个字符串(从 PDO 查询提取到 MYSQL DB)传递给 *nix 程序,在本例中为 xtide .

一切正常,直到我传递一个包含撇号的字符串。

这适用于 OSX 的终端:

house@New-MacBook-Pro:~$ tide -l "Nomans Land, Martha's Vineyard, Massachusetts"

但是完全相同的字符串,从 PDO 查询到 MYSQL 数据库,并作为变量传递到 shell_exec,总是失败。我如何安排单引号/双引号似乎并不重要。

运行它会添加反斜杠,但仍然失败:

$tideLocation = mysql_real_escape_string($tideLocation);

输出:

Nomans Land, Martha\’s Vineyard, Massachusetts

失败:

$output1 = shell_exec("/opt/local/bin/tide -l 'Nomans Land, Martha's Vineyard, Massachusetts'");

$output1 = shell_exec("/opt/local/bin/tide -l '$tideLocation'");

当在 shell_exec 中手动设置时,这有效:

$output1 = shell_exec("/opt/local/bin/tide -l 'Nomans Land, Martha\'s Vineyard, Massachusetts'");

欢迎提出建议。

最佳答案

使用escapeshellarg为命令行参数正确转义单引号中的字符串。

示例:

$command = '/opt/local/bin/tide -l ' . escapeshellarg($tideLocation);
shell_exec($command);

关于PHP 将带撇号的字符串传递给 shell_exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247280/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com