2012-04-19 47 views
-1

我需要一些帮助来转义此脚本中的引号,我有上面和下面的代码,但它不属于这个,因为如果我只是发出屏幕-d -m -S我的世界,它创造了一个罚款。任何帮助将是惊人的,因为我一直在尝试一个小时,谢谢!使用ssh2_exec在PHP脚本中转义引号

if (!($stream = ssh2_exec($con, 'screen -d -m -S minecraft -p 0 -X stuff "\printf "\say This is a test.\r"\"\'))) { 
     echo "fail: unable to execute command\n"; 
    } else { 
     // collect returning data from command 
     stream_set_blocking($stream, true); 
     $data = ""; 
     while ($buf = fread($stream,4096)) { 
      $data .= $buf; 
     } 
     echo $data; 
     fclose($stream); 
    } 
+2

如果您还没有使用语法高亮的文本编辑器,那就是时候了。 – mario 2012-04-19 01:56:03

回答

1

不应该\应该去"之前。另外,根据您的描述,这听起来像是您只想运行“screen -d -m -S minecraft”,看起来您有一个额外的printf。

if (!($stream = ssh2_exec($con, "screen -d -m -S minecraft"))) 

http://php.net/manual/en/language.types.string.php

+0

谢谢!那有用,有点?它atleast现在运行我的PHP脚本,但返回给我以下错误:找不到屏幕会话。 – 2012-04-19 01:56:22

+0

我想在第一次创建它时发送一个命令到屏幕上,像“free -m”这样简单的东西来查明它是否会先运行会很好,因为它不适用于我 – 2012-04-19 01:59:25

+0

这听起来像ssh连接工作,但是屏幕给你一个错误。你确定你的论点是正确的吗?你可以尝试在字符串的末尾添加“-p 0 -X”来查看是否改变了任何东西? – 2012-04-19 02:00:10

0

你只需要改变"\\"