Information zur Installation dieser PECL-Extension finden sie im Kapitel Installation von PECL-Extensions. Zusätzliche Informationen wie neue Releases, Downloads, Quelldateien, Maintainerinformation und ein CHANGELOG finden Sie hier: » http://pecl.php.net/package/ssh2.
Eine DLL-Datei für diese PECL-Erweiterung steht derzeit nicht zur Verfügung. Weitere Details finden Sie im Abschnitt zum Kompilieren für Windows.
Using PECL it must be specified the channel, since the beta version has to be choosen instead of stable one:
$ pecl install ssh2 channel://pecl.php.net/ssh2-version
Installing ssh2:
1) Download and unpack tar.gz per instructions above.
2) Enter unpacked directory
3) vi patchfile, paste the following (except the ###) and save:
##########################################
--- ssh2.c.orig 2005-11-01 15:40:23.000000000 -0800
+++ ssh2.c 2007-10-05 11:29:50.000000000 -0700
@@ -477,7 +477,7 @@
ZEND_FETCH_RESOURCE(session, LIBSSH2_SESSION*, &zsession, -1, PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-#if LIBSSH2_APINO < 200412301450
+#if LIBSSH2_VERSION_NUM < 0x001000
libssh2_session_methods(session, &kex, &hostkey, &crypt_cs, &crypt_sc, &mac_cs, &mac_sc, &comp_cs, &comp_sc, &lang_cs, &lang_sc);
#else
kex = libssh2_session_methods(session, LIBSSH2_METHOD_KEX);
##########################################
4) run patch < patchfile
5) vi /etc/php.ini, add extension = ssh2.so where appropriate and save.
6) restart apache, use phpinfo() to confirm
To help someone avoid the headaches I did for a week. SSH2 functions have problems with the ssh2-beta & libssh2-0.18 even after patching with said patches on the internet.
ssh_exec will work fine
ssh2_shell will not work
In order to use ssh2_shell I had to roll back to libssh2-0.14 in order to get ssh2_shell function to work properly
Just a little note: when compiling this package after modifying the ssh2.c, do not use pecl build as it will not create an ssh2.so file (although it says it succeeded), use:
phpize
./configure --with-ssh2
make
you then need to copy the ssh2.so file into your extension dir if it didn't do so already.
LIBSSH2_APINO was removed from the public header file. You need to patch ssh2.c to work with new libssh2 versions.
ssh2.c patch:
LINE 480:
search and change following line:
#if LIBSSH2_APINO < 200412301450
...
#else
to:
#if (defined(LIBSSH2_APINO) && LIBSSH2_APINO < 200412301450)
...
#else /* if LIBSSH2_APINO is not defined its v0.14 or higher. no problem! */
LINE 1216:
search and change following line:
#if (LIBSSH2_APINO > 200503221619)
to:
#if (defined(LIBSSH2_APINO) && (LIBSSH2_APINO > 200503221619)) || (defined(LIBSSH2_VERSION_NUM) && LIBSSH2_VERSION_NUM >= 0x001000)
Compile again!
----
Volkan K.