用于Sed命令的PHP中的Escaped Quotes

时间:2012-04-22 21:21:25

标签: php syntax sed quotes libssh2

我有以下php代码

if (!($stream = ssh2_exec($con, 'sed -i \'s/motd=A Minecraft Server/motd=\'.$name.\'s     Server/g\' /home/servers/runner15/server.properties
'))) {

但是当我运行它而不是将文本“motd = A Minecraft Server”替换为“motd = runner15s Server”时,它将其更改为motd = .. s Server

这是逃避引号的事情

哦顺便说一句$ name持有runner15

2 个答案:

答案 0 :(得分:2)

基本PHP字符串... '字符串不插入变量,因此您的sed命令包含文字$name等...这将被解释为远程服务器上不存在的shell变量,并扩展为空字符串。

[...snip...]otd=A Minecraft Server/motd=\''.$name.'\'s [..snip...]
                                          ^-------^--- 'exit' the string in your client-side PHP

答案 1 :(得分:0)

在ssh2_exec之前尝试escapeshellcmdhttp://www.php.net/manual/en/function.escapeshellcmd.php