我有腳本在/ home/PI/MYDIR我要執行我必須這樣做的第一件事就是phpseclib SSH - 更改目錄並運行腳本?
$ssh->exec('cd mydir');
然後
$ssh->exec('./script');
,但它不工作,所以任何人都可以幫助我?
我有腳本在/ home/PI/MYDIR我要執行我必須這樣做的第一件事就是phpseclib SSH - 更改目錄並運行腳本?
$ssh->exec('cd mydir');
然後
$ssh->exec('./script');
,但它不工作,所以任何人都可以幫助我?
這是exec()如何工作的一個基本限制。 exec()有點像......你打開PuTTY,輸入cd mydir
,重新啓動PuTTY,然後輸入./script
。如果你做了這些,你不會期望「./script」在「mydir」中運行。然而,這幾乎是exec()所做的。
在這種情況下,它不是一個phpseclib問題 - 它更像是一個SSH問題。由SSH規範定義的exec()並不支持這一點。
更多信息:
http://phpseclib.sourceforge.net/ssh/examples.html#chdir
我的建議:要麼使用絕對路徑的或使用的read()/ write()方法。
祝你好運!
好吧,我嘗試使用讀寫,它工作正常,但有一個問題,當我嘗試運行程序/腳本(./video樣本/測試)腳本工作了1秒,然後熄滅。任何soloution? – MordFustang
這些日誌可能會提供一些見解。您可以通過在文件頂部執行define('NET_SSH2_LOGGING',2);'然後在最後調用echo'
' . $ssh->getLog() . ''來獲得它們。一旦你得到日誌,發佈他們,我們可以看到我們看到的。 – neubert
好吧我解決了我的問題,不殺死進程,所以它不是phpseclib問題。無論如何感謝您的幫助。 – MordFustang
cd /path/to/directory && your command
我的臨時解決方案!
可使用\ n:
$ssh->exec("cd mydir\n./script");
或者創建一個文件script.sh
(例如),並將其保存在UNIX格式:
cd mydir
./script
和exec這個腳本:
$script = file_get_contents("script.sh");
$ssh->exec($script);
可能是你webserver沒有執行該腳本的權限。 – ciruvan
我使用xampp,那麼我需要什麼樣的權利? – MordFustang