NET/SSH2.php Fehler nach Update auf 5.0

Mir ist auch komisch vorgekommen, dass 2 Pfade existieren.

Ich gehe jetzt aber von dem

C:\IP-Symcon\scripts
et Pfad aus und rufe das Script so auf

include('Net/SFTP.php');

$ssh = new Net_SSH2('192.168.123.10');
if (!$ssh->login('user', '12345')) {
    exit('Login Failed');
}

Neue Fehlermeldung ist

Fatal error: Uncaught Error: Class ‚Math_BigInteger‘ not found in C:\IP-Symcon\scripts\Net\SSH2.php:1659
Stack trace:
#0 C:\IP-Symcon\scripts\Net\SSH2.php(1255): Net_SSH2->_key_exchange()
#1 C:\IP-Symcon\scripts\Net\SSH2.php(2210): Net_SSH2->_connect()
#2 C:\IP-Symcon\scripts\Net\SSH2.php(2194): Net_SSH2->_login(‚user‘, ‚12345‘)
#3 C:\IP-Symcon\scripts\41857.ips.php(10): Net_SSH2->login(‚user‘, ‚12345‘)
#4 {main}
thrown in C:\IP-Symcon\scripts\Net\SSH2.php on line 1659
Abort Processing during Fatal-Error: Uncaught Error: Class ‚Math_BigInteger‘ not found in C:\IP-Symcon\scripts\Net\SSH2.php:1659
Stack trace:
#0 C:\IP-Symcon\scripts\Net\SSH2.php(1255): Net_SSH2->_key_exchange()
#1 C:\IP-Symcon\scripts\Net\SSH2.php(2210): Net_SSH2->_connect()
#2 C:\IP-Symcon\scripts\Net\SSH2.php(2194): Net_SSH2->_login(‚user‘, ‚12345‘)
#3 C:\IP-Symcon\scripts\41857.ips.php(10): Net_SSH2->login(‚user‘, ‚12345‘)
#4 {main}
thrown
Error in Script C:\IP-Symcon\scripts\Net\SSH2.php on Line 1659

In der Zeile 1659 von SSH2.php steht

$g = new Math_BigInteger(2);

Die Datei C:\IP-Symcon\scripts\math\BigInteger.php existiert.

Soll ich versuchen net_php komplett neu einzubinden?

Vielleicht hilft dir ein Beispiel.
Schau mal hier: IPS-Tvheadend/IPS-Tvheadend/libs at master · Schnittcher/IPS-Tvheadend · GitHub

Und hier binde ich es dann ein: IPS-Tvheadend/module.php at master · Schnittcher/IPS-Tvheadend · GitHub

Schau mal in die SSH2.php rein im Constructor siehst du dort, wie die Klasse eingebunden wird.
Was steht da? Ich denke irgendwas passt bei dir mit den Pfaden nicht.

Grüße,
Kai

dein Beispiel hats gebracht, vielen Dank.

Ich hatte beide Pfade miteinander vermischt und weiter oben ein Include auf einen alten Pfad gesetzt. Jetzt funktioniert es.

Vielen Dank für die Hilfe!

LG
Hugo

Der Thread ist zwar älter… ich hoffe mir kann jemand helfen.

Ich will künftig mein IPS System auf Windows umziehen und teste im Moment auf einem frischen IPS SSH. Bei der alten Installation
auf RPI waren alle PHP’s also ssh2, bininteger, usw direkt im Script Verzeichnis, also eine Menge Dateien… ich muss zugeben, ich kenne mich mit den Includes nicht richtig aus., aber es ist gelaufen…

Nun habe ich folgendes gemacht:

phpseclib3 frisch runtergeladen und unter scripts in ein libs Verzeichnis gepackt:

C:\ProgramData\Symcon\scripts\libs

dort liegen die ganzen Verzeichnisse mit den PHP Libs.

eingebunden habe ich es mit u.a.Include… danach kommt aber beim Ausführen die u.a. Fehlermeldung mit einer Klasse, auch das sagt mir leider nichts…:confused:

Bitte um kurze Hilfestellung, ich habe im Forum viel gelesen komme aber nicht auf die Lösung.


<?php

echo IPS_GetKernelDir();
include(IPS_GetKernelDir().'scripts\libs\phpseclib3\Net\SSH2.php'); 

$ssh = new NET_SSH2('192.168.1.72');
if (!$ssh->login('user', 'pw')) {
    exit('Login Failed');
}  


Es kommt folgende Fehlermeldung nach dem Ausführen:


C:\ProgramData\Symcon\
Fatal error:  Uncaught Error: Class 'NET_SSH2' not found in C:\ProgramData\Symcon\scripts\41565.ips.php:6
Stack trace:
#0 {main}
  thrown in C:\ProgramData\Symcon\scripts\41565.ips.php on line 6


Schau mal hier: Laut Doku werden in V3 jetzt Namespaces genutzt: Connecting · phpseclib

paresy

Moin,

hier http://phpseclib.sourceforge.net/ wird auch noch die alte 1.0.19 angeboten :wink: Ich habe noch die 1.0.18 im Einsatz die ebenfalls problemlos funktioniert. Diese Versionen müssen einfach im scripts Verzeichnis entpackt werden.

@paresy Gibt es aus eurer Sicht einen Grund auf die V 3 zu wechseln?

Gruß
Hans

Ich wüsste keinen Grund wenn alles gut läuft.

paresy

Moin,

danke paresy. Ich habe gerade auf die 1.0.19 ein Update gemacht und alles funktioniert bei mir weiterhin problemlos :wink:

@juwo1811 Die Einbindung unter Win ist dann

include('Net/SSH2.php');

Gruß
Hans

EDIT2
Alles geht, danke… keine weiteren Fragen, Einbindung des Befehls in die autoload.php brachte das gewünschte Ergebnis.

EDIT
Habe die Vers. 1.0.19 geladen und das Verz. phpseclib in das Scripte Verz. kopiert, wenn ich diesen Befehl am Anfang des Scriptes setze

 set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '\phpseclib');  

findet er alle Bibliotheken und es funktioniert. Danke !!

Kann ich diesen Befehl irgendwo zentral hinterlegen, damit ich nicht in jedem PHP Script das SSH nutzt das einbinden muss?

@paresy
Danke für den Hinweis, ich dachte wenn ich alles Neu mache dann auch die neuste Version… mhm dann versuche ich das mal mit der alten Version

@PC Oldie
die phpseclib ist ja eigentlich im Ordner phpseclib, muss ich dann alle Ordner aus diesem in das Script Verzeichnis kopieren, also Math, Net, Crypt etc… ??

Ich danke Euch für die Hilfe… man muss wohl nicht immer alles NEU haben:D

Moin,

ich habe bei allen Versionen immer alle Verzeichnisse und die beiden Dateien direkt im Verzeichnis scripts liegen. Seit Jahren keine Probleme damit.

Gruß
Hans

Moin, alles klar, es geht mit dem o.g Kommando und Einbindung in das _autoload.php, damit habe ich im Scripte Verzeichnis nur den Ordner phpseclib, ist für micht aufgeräumter :smiley:

Vielen Dank für Deine Hilfe Hans.

Gruß
Jürgen

Moin Jürgen,

das werde ich auch noch so machen, da ich diverse Funktionen in die __autoinclude.php legen möchte. Siehe auch hier https://www.symcon.de/forum/threads/45439-Eigene-Funktionen-global-in-IPS-verwendbar-machen falls für dich interessant :wink:

Gruß
Hans

Danke Hans, trotz lesen hatte ich den Thread nicht gefunden… Gute Sache! :slight_smile:

Gruß Jürgen