2012-04-19 22 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

你只需要改變"\\"