2012-12-27 10 views
24
nicht

Es folgt mein Skript:PHP-Funktion ssh2_connect arbeitet

<?php 
    $connection = ssh2_connect('XX.XX.XX.XX', 22); 
    ssh2_auth_password($connection, 'root', '******'); 

    $stream = ssh2_exec($connection, 'useradd -d /home/users/test -m testftp'); 
    $stream = ssh2_exec($connection, 'passwd testftp'); 
    $stream = ssh2_exec($connection, 'password'); 
    $stream = ssh2_exec($connection, 'password'); 
    ?> 

Es wird folgende Fehler zeigt:

Fatal error: Call to undefined function ssh2_connect() in /home/chaosnz/public_html/fotosnap.net/test.php on line 2 

Wie kann ich damit umgehen?

Dank

+7

Was hast du probiert? Was hat nicht funktioniert? Welche Forschung haben Sie unternommen, um dieses Problem zu lösen? Hast du sichergestellt, dass [die Erweiterung SSH2 PECL] (http://php.net/book.ssh2) installiert und aktiviert ist? Es ist * nicht * ein Teil von Standard-PHP. – Charles

+1

Ich habe die SSH2 PECL-Erweiterung installiert und es funktioniert gut danke allen für Sie helfen .. – ravisoni

+1

Wenn Sie können, sollten Sie das als Ihre Antwort und markieren Sie es akzeptiert. Möglicherweise müssen Sie etwas warten, bevor das System es Ihnen erlaubt. Diese Aktion wird zukünftigen Benutzern mit dem gleichen Problem helfen. – Charles

Antwort

16

Ich habe die SSH2 PECL-Erweiterung installiert und es funktioniert gut dankt allen für Sie helfen ...

+6

Wie hast du das installiert? – ihue

+1

mit dieser http://prograster.blogspot.ch/2013/06/centos-64-install-ssh2-extension-for-php.html – Agriesean

18

Ehrlich gesagt, würde ich empfehlen, phpseclib mit einer pure PHP SSH2 implementation. Beispiel:

<?php 
include('Net/SSH2.php'); 

$ssh = new Net_SSH2('www.domain.tld'); 
if (!$ssh->login('username', 'password')) { 
    exit('Login Failed'); 
} 

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

Es ist eine Tonne mehr tragbar, einfacher zu bedienen und mehr Funktion zu verpackt.

+0

Könnte eine gute Lösung für einige Leute sein, aber ich brauche etwas, ohne zusätzliche Arbeit zu arbeiten Installationen. –

+0

libssh2 erfordert libssh2 installiert werden. phpseclib benötigt nur die Dateien irgendwo im Dateisystem, aber wenn Sie das als eine Installation betrachten wollen ... nun, dann ist die einzige wirkliche Alternative, die Ihnen übrig bleibt, Ihre eigene SSH-Implementierung zu schreiben. viel Glück damit. – neubert

1

Ich verwende CentOS 5.6 als meine Entwicklungsumgebung und das folgende funktionierte für mich.

su - 
pecl install ssh2 
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini 

/etc/init.d/httpd restart 
8

Sie benötigen ssh2 lib

sudo apt-get install libssh2-php && sudo /etc/init.d/apache2 restart

zu installieren, sollte ausreichen, um Sie auf der Straße

+1

'Package libssh2-php ist nicht verfügbar, wird aber von einem anderen Paket bezeichnet. Wie löst man das? – Casper

+0

Mit usign die vorgeschlagene Alternative, 'sudo apt-get installieren php-ssh2' – omega1

8

zu bekommen Wenn Sie ein bomebrew auf OSX laufen, habe ich folgendes zu installieren es:

brew install php56-ssh2 

Das wor für mich. Ich habe es von here gezogen. Es sollte auch Ubuntu und OSX geben, die auch den Mac-Port verwenden.

+1

Nach der Installation, bekomme ich immer noch' Call zu undefinierten Funktion App \ ssh2_connect() '- Weißt du warum? – ihue

0

auf @neubert Antwort zu erweitern, wenn Sie Laravel 5 oder ähnliches verwenden, können Sie phpseclib viel einfacher wie diese verwenden:

Run composer require phpseclib/phpseclib ~2.0

In Ihrem Controller hinzufügen

use phpseclib\Net\SSH2;

Dann verwenden Sie es in einer Controller-Methode wie:

$host = config('ssh.host'); 
$username = config('ssh.username'); 
$password = config('ssh.password'); 
$command = 'php version'; 

$ssh = new SSH2($host); 
    if (!$ssh->login($username, $password)) { 
     $output ='Login Failed'; 
    } 
    else{ 
     $output = $ssh->exec($command); 
}