15 Stimmen

PECL SSH2-Erweiterung für PHP installieren

Ich versuche dies zu installieren http://fr2.php.net/manual/en/book.ssh2.php auf einem Centos 5 (einem Fork von RHEL 5).

Ich habe libssh2 installiert (yum install libssh2), die sich in /usr/lib befindet, und wenn ich die SSH2-Erweiterung installiere (über pecl install -f ssh2), erhalte ich folgende Meldung

Prüfung auf ssh2-Dateien im Standardpfad... nicht gefunden configure: Fehler: Die erforderliche libssh2-Bibliothek wurde nicht gefunden. Sie können dieses Paket von http://sourceforge.net/projects/libssh2/ ERROR: `/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2=/usr' fehlgeschlagen

Wenn ich /usr/lib einstelle, erhalte ich die gleiche Meldung

ERROR: `/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2=/usr/lib' fehlgeschlagen

Wo liegt das Problem?

0voto

Mighty Punkte 303

Ich hatte dieses Problem:

Ich habe ein von Pair.com gehostetes "Advanced"-Konto und bin daher in meinen Möglichkeiten ein wenig eingeschränkt. Ich glaube, ich kann nicht yum noch aptitude noch eines der anderen vorkompilierten Pakete.

Ich habe libssh2 heruntergeladen und kompiliert. Während der pecl Prozesses wird gefragt, wo sich die Bibliothek befindet. Sie befindet sich in "~/usr/local/lib", und ich habe mehrere Varianten ausprobiert, einschließlich der voll qualifizierten. Aber ich bekam immer wieder die gleiche Fehlermeldung.

Die Fehlermeldung gibt nicht genau an, nach welcher Datei gesucht wird. libssh2.so befindet sich in diesem Verzeichnis. Ich weiß, dass die Ausgabe ssh2.so sein soll. Ich habe mich gefragt, ob es eine ss2.something oder eine libssh.nothing geben soll?

Ich habe es so gelöst. In meinem Fall habe ich nach dem Kompilieren von libssh2 den PEAR-Tarball heruntergeladen. Der Trick war:

./configure --with-ssh2=<libssh2 location> --prefix=<libssh2 location>

Ein weiterer Trick ist, dass ich, da Pair.com unter FreeBSD läuft, nach dem Befehl ./configure ein "cd ." eingeben muss. Andernfalls produziert make einen "Permission denied"-Fehler. Offenbar ist dies bei allen *nix BSD-Varianten notwendig.

0voto

jeff-h Punkte 1624

Der Fehler:

checking for ssh2 files in default path... not found
configure: error: The required libssh2 library was not found.

...ist zu sehen in den Quellcode .

Die Logik des Codes verrät, dass dieser Fehler auftritt, wenn er Folgendes nicht findet /include/libssh2.h entweder in /usr/local , /usr oder in dem Pfad, der durch die optionale Option --with-ssh2=[DIR] Richtlinie. Mit anderen Worten, ohne die Richtlinie anzupassen, muss sie eine der folgenden Möglichkeiten finden:

/usr/local/include/libssh2.h
/usr/include/libssh2.h

Wenn er diese Prüfung besteht, geht er davon aus, dass er die libssh2 finden kann lib unter /usr/local/lib o /usr/lib .

Ich hoffe, dass die obigen Informationen ausreichen, um jemandem bei der Fehlersuche zu helfen. Mein eigener Fall ist ziemlich spezifisch und ungewöhnlich (macOS mit Homebrew in einem benutzerdefinierten Installationspfad), aber für den Fall, es hilft jemand anderes, hier ist meine schrecklich hacky Workaround. Funktioniert perfekt lol

Kurz gesagt, ich erstelle zwei temporäre Symlinks, damit pecl ssh2 dort finden kann, wo es erwartet wird.

# First check that neither /usr/local/include nor /usr/local/lib exists

sudo ln -s /usr/local/CustomInstallPath/Homebrew/Cellar/libssh2/1.9.0_1/include /usr/local/include
sudo ln -s /usr/local/CustomInstallPath/Homebrew/Cellar/libssh2/1.9.0_1/lib /usr/local/lib
pecl install -a ssh2-1.3.1
sudo rm -rf /usr/local/include
sudo rm -rf /usr/local/lib

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X