Heute hatte ich mich im Zuge einer kleinen Programmieraktion in PHP mit SSH2 auseinandersetzen müssen. Da dies standartmäßig nicht integriert ist, habe ich also ein wenig geforscht und bin schlussendlich auf die Möglichkeit einer Installation via PECL gestossen.

Meine Ausgangslage:

  • Debian 3.1 Sarge
  • PHP4
  • Apache2.0
  • Commandozeilenzugriff

Die Installation gestaltet sich denkbar einfach, zunächst muss man OpenSSL installieren:

1
apt-get install openssl-dev openssl

Nachdem dies geschehen ist muss man nun die LibSSH2 installieren, für die es kein Debian-Package gibt. Daher muss man zunächst das neueste Packet von Sourceforge holen und damit folgendes machen(hier am Beispiel der Version 2.0.13):

1
2
3
tar xfvz libssh2-0.13.tar.gz
cd libssh2-0.13
./configure && make all install

Nun ist libSSH2 zur Verwendung bereit. Jetzt kann man via PECL die extension ssh2 installieren. Da es derzeit keine stable Version des ssh2-Packet gibt, muss man die Beta installieren(Zusätzliche Informationen, wie neue Releases, Downloads Quelldateien, Maintainerinformation und ein CHANGELOG finden Sie hier: http://pecl.php.net/package/ssh2):

1
pecl install ssh2-beta

Nun sollte PECL sich melden wohin es SSH2 installiert hat (bei mir war es glaube ich /usr/share/php4/, aber das is von Installation zu Installation unterschiedlich). Dieses Verzeichnis sollte man mal besuchen, wenn man sich nicht sicher ist, ob es das in der PHP.ini angegebene “extension_dir”-Verzeichnis ist. Sollte sich darin nur eine ssh2.so finden lassen, so sollten sie mal die php.ini konsultieren(cat /etc/php4/apache2/php.ini | grep extension_dir), evtl liegt das extension_dir woanders. Entsprechen muss natürlich die ssh2.so woanders(also in extension_dir) hinkopiert werden.

Nun öffnet man die php.ini, welche sich bei debian unter /etc/php4/apache2/php.ini finden lässt und fügt folgende Zeile entweder am Ende, oder einer geeigneten anderen stelle hinzu:

1
extension=ssh2.so

Normalerweise sollte sich nun nach einem Restart des Webservers die SSH2-Extension in phpinfo(); finden lassen.

Und fertig ;)