我正在尝试创建一个 PHP 脚本,该脚本通过 ssh 在远程 linux 服务器上创建一个文件,并将文件内容回显到其中。
但是,我无法弄清楚如何正确和安全地编码/转义文件内容,以便内容不会被解释为命令。
我从这里使用 phpseclib 。
我试过类似的东西
echo $ssh->exec('sudo echo "' . escapeshellarg($newConfig) . '" > /etc/nginx/nginx.conf') . "\n";
但没有成功。
谢谢,
史蒂夫
那么escapeshellcmd呢?引用那个 vs escapeshellarg 的描述:
escapeshellarg() 在字符串周围添加单引号并引用/转义任何现有的单引号,允许您将字符串直接传递给 shell 函数并将其视为单个安全参数。
...和...
escapeshellcmd() 转义字符串中可能用来欺骗 shell 命令执行任意命令的任何字符。此函数应用于确保来自用户输入的任何数据在传递给 exec() 或 system() 函数或反引号运算符之前被转义。
以下字符以反斜杠开头:#&;`|*?~<>^()[]{}$\、\x0A 和 \xFF。' 和 " 仅在它们未配对时才被转义。在 Windows 中,所有这些字符加上 % 都被替换为空格。
我做错了,我应该用Net_SFTP而不是NET_SSH做这种事情。