dedlfix: popen will nicht

Beitrag lesen

echo $begrüßung;

Sieht jemand von euch den Fehler?

Den nicht direkt, aber mehrere andere.

$ifc_hash{'wan'}{'count'}=0; $ifc_hash{'lan'}{'count'}=0; $ifc_hash{'backup'}{'count'}=0; $ifc_hash{'cross'}{'count'}=0; $ifc_hash{'switch'}{'count'}=0;

Das ist zwar gültige PHP-Syntax, maacht aber vermutlich etwas anderes als du willst. PHP unterscheidet nicht zwischen verschiedenen Array-Typen. Es gibt nur eine Sorte Array, und auf Elemente greift man mit [] zu. {} ist (mittlerweile alte) Syntax für zeichenweisen Stringzugriff.

$command="/usr/bin/perl /home/ipc/CoPS/Entwicklung/bin/get_interfaces_php_exporter.pl ".$ce_model;

$shell=popen($command, "w");

#DEBUG:
echo "\nCOMMAND:|".$command."|\n";
echo "Gettype:|".gettype($shell)."|\n";
echo "Read:|".fread($shell, 2096)."|\n";
echo "Print_R:|".print_r($shell)."|";

Wenn du möchtest, dass print_r() etwas zurückgibt anstatt es direkt auszugeben, solltest du als zweiten Parameter true übergeben.
Ebenfalls günstig für die Debug-Ausgabe von Variableninhalten ist var_dump(). Das zeigt Variablentyp und Länge des Inhalts an. Du kannst dir dann das Einrahmen in || sparen.

Zurück bekomme ich aber lediglich:
COMMAND:|/usr/bin/perl /home/ipc/CoPS/Entwicklung/bin/get_interfaces_php_exporter.pl ce-2851-4T1DSU-4ESW-SP|
Gettype:|resource|
Read:||
Resource id #2Print_R:|1|

popen() gibt laut Handbuch auch dann eine Ressourcenkennung zurück, wenn ein Fehler auftrat. Das macht es, um den Fehlermeldungstext empfangen zu können. Dazu muss dieser aber auf die Standardausgabe umgeleitet werden. Füge doch mal, wie im Handbuch zu sehen, ein >2&1 an deinen Befehl an, und schau mal, ob fread() dann etwas zurückgibt.

echo "$verabschiedung $name";