php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.01.2012, 23:57  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
PHP-Kenntnisse:
Anfänger
Cetax befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] stdout in ein array ?

Hallo,
ich habe hier einen kleiner Apachen(Linux), auf dem exec nicht erlaubt ist.
Nun brauche ich aber dringend die Ausgabe des Programms, um es weiter verarbeiten zu können.
Diese Funktion gibt den Inhalt der Datei über die Standartausgabe (stdout) aus.
Die Standartausgabe ist momentan die Konsole.
Ich möchte jetzt aber, dass stdout auf eine Datei zeigt und somit der Inhalt ausgelesen werden kann.
Ich hoffe ihr versteht mich

Wie kann ich die Standartausgabe umleiten?

Das PHP-Script sieht so aus:
PHP-Code:
<?php
exec
("/opt/bin/fetch2300",$fetcharray);
foreach (
$fetcharray as $value)
{
    list(
$parameter,$parvalue)=explode(" "$value);
    
$ws["$parameter"]=$parvalue;
}
$forecastpicstrtolower($ws["Forecast"]) . ".jpg";
$tendencypicstrtolower($ws["Tendency"]) . ".png";
?>
Ich hatte da sowas im Kopf, aber funktioniert nicht.
PHP-Code:
<?php
$fp
=pfsockopen("192.168.178.1",23);
if(!
$fp)
       {
       echo 
"<font color=\"#FFFFCC\"><strong>Verbindung Fehlgeschlagen!</strong></font>";
       exit();
       }
else 
       { 
sleep(4);
fputs($fp,"1234\r");  //Passwort eingabe
sleep(2);
fputs($fp,"/opt/bin/fetch2300\r",$fetcharray);
sleep(5);
}
fclose($fp);
foreach (
$fetcharray as $value)
{
    list(
$parameter,$parvalue)=explode(" "$value);
    
$ws["$parameter"]=$parvalue;
}
$forecastpicstrtolower($ws["Forecast"]) . ".jpg";
$tendencypicstrtolower($ws["Tendency"]) . ".png";

?>
Kann mir jemand sagen, wie ich die Ausgabe umlenken kann?

Vielen Dank für eure HIlfe.

*greatz*
Cetax
Cetax ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.01.2012, 00:01  
meikel
Gast
 
Beiträge: n/a
Standard

Eigentlich heißt das Linux Enter nicht "\r" sondern "\n"...
  Mit Zitat antworten
Alt 02.01.2012, 00:12  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
PHP-Kenntnisse:
Anfänger
Cetax befindet sich auf einem aufstrebenden Ast
Standard

Moin,
Zitat:
Eigentlich heißt das Linux Enter nicht "\r" sondern "\n"...
habe ich geändert, aber leider bleibt das array anscheinen leer...
Zumindest ist die seite ohne Daten.

Wird das Programm denn mit dem Befehl ausgeführt ?
PHP-Code:
fputs($fp,"/opt/bin/fetch2300\r",$fetcharray); 
Gibt es eine möglichkeit, das zu kontrollieren?

*greatz*
Cetax
Cetax ist offline   Mit Zitat antworten
Alt 02.01.2012, 00:32  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

fputs() gibt im dritten Parameter keine Ausgabe von irgendwas zurück.

Ganz offensichtlich versuchst Du da irgendeinen Telnet-Zugriff auf Deinen eigenen Host. Da ist es aber nicht damit getan, irgendwo ein Passwort hin zu schießen, das Kommando abzusetzen und hoffen, dass irgendwie Daten zurück kommen.

Damit wir Dir sinnvoll helfen können, bitte noch mal von vorne:
- Warum ist exec() deaktiviert?
- Gilt selbiges auch für popen() und proc_open()?
- Was genau ist das für eine Software, die da betrieben werden soll? Wie kommt die auf den zugehörigen Host? Warum kannst Du Software installieren, nicht aber exec & co aktivieren?

Bitte beschreib das ganze mal ausführlicher. Telnet ist die schlechteste aller möglichen Lösungen - erstmal sollte sicher gestellt werden, dass wirklich keine andere Alternative in Frage kommt.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 02.01.2012, 00:34  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Cetax Beitrag anzeigen
Wird das Programm denn mit dem Befehl ausgeführt?
KA. Mit telnet kenne ich mich nicht so aus.
  Mit Zitat antworten
Alt 02.01.2012, 00:53  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
PHP-Kenntnisse:
Anfänger
Cetax befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
also wie folgt:
ich habe eine NSLU2 mit unslung drauf, auf der läuft der Apache2,aber bei dem ist exec ausgeschaltet.
An der NSLU2 hängt eine Wetterstation.
Auf der Konsole kann ich das Programm wie folgt starten und bekomme eine ausgabe direkt auf der konsole:

Code:
webserver@NAS:/> /opt/bin/fetch2300 /etc/open2300.conf                                                                    
Date 2012-Jan-02
Time 00:42:22                                                                                                                
Ti 24.6                                                                                                                      
Timin 21.5                                                                                                                   
Timax 27.4                                                                                                                   
TTimin 12:46                                                                                                                 
DTimin 2011-12-31                                                                                                            
TTimax 22:13                                                                                                                 
DTimax 2011-12-31                                                                                                            
To 11.1                                                                                                                      
Tomin -0.7                                                                                                                   
Tomax 11.2                                                                                                                   
TTomin 02:24                                                                                                                 
DTomin 2011-12-31                                                                                                            
TTomax 21:34                                                                                                                 
DTomax 2012-01-01
Nu soll das ganze mit PHP eingelen und ausgegeben werden, die webseite dazu sieht so aus(kurz fassung):
Code:
<?php
exec("/opt/bin/fetch2300",$fetcharray);
foreach ($fetcharray as $value)
{
    list($parameter,$parvalue)=explode(" ", $value);
    $ws["$parameter"]=$parvalue;
}
$forecastpic= strtolower($ws["Forecast"]) . ".jpg";
$tendencypic= strtolower($ws["Tendency"]) . ".png";
?> 
<html>

<head>
<title>Weather Station</title>
<META HTTP-EQUIV="Expires" CONTENT="Tue, 01 Jan 1980 1:00:00 GMT">  
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">  
<META HTTP-EQUIV="Refresh" CONTENT="180">  
</head>
<body>
<center><b><?=$ws["Time"]?>&nbsp;&nbsp;<?=$ws["Date"]?></b></center><br>
<img src="<?=$forecastpic?>" align="left">
<br>Forecast: <?=$ws["Forecast"]?><br><br>
Tendency: <?=$ws["Tendency"]?> <img src="<?=$tendencypic?>" align="middle">
</body>
</html>
Zitat:
Zitat von Jens Clasen Beitrag anzeigen
fputs() gibt im dritten Parameter keine Ausgabe von irgendwas zurück.

Ganz offensichtlich versuchst Du da irgendeinen Telnet-Zugriff auf Deinen eigenen Host. Da ist es aber nicht damit getan, irgendwo ein Passwort hin zu schießen, das Kommando abzusetzen und hoffen, dass irgendwie Daten zurück kommen.

Bitte beschreib das ganze mal ausführlicher. Telnet ist die schlechteste aller möglichen Lösungen - erstmal sollte sicher gestellt werden, dass wirklich keine andere Alternative in Frage kommt.

Gruß Jens
Zitat:
Damit wir Dir sinnvoll helfen können, bitte noch mal von vorne:
- Warum ist exec() deaktiviert?
Weil es keinen Apachen für die NSLU2 gibt, der das kann, weil damit wohl alles ausgebremst werden würde.
Zitat:
- Gilt selbiges auch für popen() und proc_open()?
Das weiss ich nicht..
Zitat:
- Was genau ist das für eine Software, die da betrieben werden soll? Wie kommt die auf den zugehörigen Host? Warum kannst Du Software installieren, nicht aber exec & co aktivieren?
siehe Anfang..

Danke für Eure MÜHE, hoffe es jetzt ein weinig verständlicher.

*greatz*
Cetax
Cetax ist offline   Mit Zitat antworten
Alt 02.01.2012, 01:04  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Ein deaktiviertes exec() hat nichts, aber auch gar nichts mit dem Apachen, sondern einzig und allein mit der PHP-Konfiguration zu tun. Und: Die kannst Du auch bei Deinem NAS-Dingsdabums ändern. Bevor Du weiter machst, solltest Du das versuchen. Oder benötigt Dein Weter-Dingens etwa Root-Rechte oder sowas?

Übrigens: Wenn Dein PHP-exec "alles ausbremst", dann tut Dein Telnet-Versuch das auch.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 02.01.2012, 01:14  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
PHP-Kenntnisse:
Anfänger
Cetax befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
Zitat:
Zitat von Jens Clasen Beitrag anzeigen
Ein deaktiviertes exec() hat nichts, aber auch gar nichts mit dem Apachen, sondern einzig und allein mit der PHP-Konfiguration zu tun. Und: Die kannst Du auch bei Deinem NAS-Dingsdabums ändern. Bevor Du weiter machst, solltest Du das versuchen. Oder benötigt Dein Weter-Dingens etwa Root-Rechte oder sowas?

Übrigens: Wenn Dein PHP-exec "alles ausbremst", dann tut Dein Telnet-Versuch das auch.

Gruß Jens
Nein , keine Root rechte.
Habe ich versucht aber google sagt auch das exec nicht funktioniert.
Zitat:
no exec(), system() or similar functions available in php: This version of the pkg has the apache worker MPM modules. Becasue of certain problems with threading, any system() type of calls from php scripts will hang the server. It may be possible to build a version with prefork module (instead of the current worker module) and that might overcome this problem.
Deshalb suche ich ja nach einer "durch-die-Brust-ins-Auge" Lösung..
Cetax ist offline   Mit Zitat antworten
Alt 02.01.2012, 01:31  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Also ist exec() kapputt und nicht "nicht erlaubt". Das sind zwei verschiedene paar Schuhe...

In dem Fall würde ich tun, was auch der Artikel empfiehlt, wo Du das Zitat her hast: Nen anderen Webserver nehmen. lighttpd läuft auf der Kiste zum Beispiel und der hat das Problem nicht.

Das ist auf jeden Fall besser, als die durch die Brust ins Auge Lösung. Eine vollständig funktionale Telnet-Implementierung ist nicht ganz trivial, da Du Dich dann mit der ganzen Terminal-Emulation rum schlagen musst. Eine Neuinstallation eines anderen Webservers dürfte schneller erledigt sein.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 02.01.2012, 07:11  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
PHP-Kenntnisse:
Anfänger
Cetax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jens Clasen Beitrag anzeigen
Also ist exec() kapputt und nicht "nicht erlaubt". Das sind zwei verschiedene paar Schuhe...

In dem Fall würde ich tun, was auch der Artikel empfiehlt, wo Du das Zitat her hast: Nen anderen Webserver nehmen. lighttpd läuft auf der Kiste zum Beispiel und der hat das Problem nicht.

Das ist auf jeden Fall besser, als die durch die Brust ins Auge Lösung. Eine vollständig funktionale Telnet-Implementierung ist nicht ganz trivial, da Du Dich dann mit der ganzen Terminal-Emulation rum schlagen musst. Eine Neuinstallation eines anderen Webservers dürfte schneller erledigt sein.

Gruß Jens
Sicherlich ist es einfacher,einen anderen Webserver zu benutzen.
Aber das war und ist nicht die Frage gewesen,sonder ob und wie man die Ausgabe umleitet.
Ich möchte gern wissen, ob das machbar ist und wie man das umsetzt.
Ich möchte ja ein büschen wat lernen.

Danke für Eure Hilfe...

*greatz*
Stefan
Cetax ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rekursive Liste erstellen sponge93 PHP Einsteiger 3 20.12.2011 09:21
Array werte zusammen rechnen fabi288 PHP Einsteiger 13 03.01.2011 16:08
mehrdimensionales array inhalte tauschen pidaman PHP Tipps 2010 18 27.08.2010 16:58
Suche in Text-Datenbank ein Array und lösche es - Lösung UdoDirk PHP Tipps 2010 2 18.07.2010 08:27
[Erledigt] Sortierung mehrerer Arrays philosapiens PHP Tipps 2010 16 08.06.2010 05:22
PHPLot von der Datenbank zum mehrdimensionalen Array mannimammut PHP Tipps 2009 1 15.12.2009 10:40
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fetch2300 php, fputs parameter möglichkeiten, linux stdout in arry, button css, array ausgabe exec, \ausgabe umlenken\ array, php stdout in array

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum