2015-05-30 34 views
0

這是我的代碼upload.php。我所有的文件都在MAMP的htdocs目錄中。我可以去的網址http://localhost:8888/webpage.html,所以我假設MAMP正在工作,因爲它應該。這是我的代碼upload.php無法使用phpseclib ssh進入服務器

<?php 
    set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib'); 
    include('Net/SFTP.php'); 
    include('Net/SSH2.php'); 
    //Send file via sftp to server 
    echo "begin"; 

    echo "now connecting..."; 

    $connection = ssh2_connect('servername.com', 22); //server redacted 
    echo "server made\n"; 
    ssh2_auth_password($connection, 'username', 'password'); //username and password redacted 
    echo "connected successfuly\n"; 

    echo $ssh->exec('pwd'); 
    echo $ssh->exec('ls -la'); 
?> 

當我提交我的表單和它被重定向到upload.php,該upload.php顯示文本說

begin now connecting...

所以我假設它沒有得到過線

$connection = ssh2_connect('servername.com', 22); //server redacted

但我不明白爲什麼。

我正在使用mac。我可以通過終端使用ssh [email protected]scp ./filename.txt [email protected]:~/test/ ssh進入服務器和scp文件。顯然它會提示我輸入密碼。

也許我有錯誤的服務器名稱?有沒有人有任何想法,爲什麼它沒有越過這條線?

回答

3

這就像你在混合phpseclib API和libssh2 API。像在哪裏定義的$ ssh變量?您將ssh2_connect的結果設置爲$ connection,但稍後使用從未定義的$ ssh。

不管怎樣,試試這個:

<?php 
    set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib'); 
    include('Net/SFTP.php'); 
    include('Net/SSH2.php'); 
    //Send file via sftp to server 
    echo "begin"; 

    echo "now connecting..."; 

    $ssh = new Net_SSH2('servername.com', 22); //server redacted 
    echo "server made\n"; 
    $ssh->login('username', 'password'); //username and password redacted 
    echo "connected successfuly\n"; 

    echo $ssh->exec('pwd'); 
    echo $ssh->exec('ls -la'); 
?> 
+0

是啊,我一直在複製並從不同的來源粘貼代碼,但沒有在工作。而且我的代碼沒有到達'$ ssh'變量,所以我還沒有關心它。事實證明,我需要而不是'。 'phpseclib'我需要將整個目錄路徑包含到它的安裝位置。奇怪的是,它不會讓我包含多種東西。我可以包含'Net/SFTP.php'或'Net/SSH2.php',但不能同時包含。謝謝。 – Diego