Evtl. enthält die Zeile kein Zeichen und die Ausgabe enthält nur ein Linefeed (/n) als Zeilenumbruch.
Heizkesseldaten bereitstellen
- Zweckmair_B
- Erledigt
-
-
Hallo.
ich habe gerade in Zeile 96 das \r mit einem \n ersetzt. leider ohne Veränderung.
Aktuell habe ich die Türe offen und Ascheleeren funktioniert. Nur eben das mail noch nicht. -
Und wenn du das \r ganz weglaesst? Also nur die "" stehen laesst?
-
-
ERASER:
Das ist prinzipiell einen Versuch wert. Dennoch vermute ich den Fehler weiter oben, da es ja so auf meinem NAS funktioniert hat und ja auch eine rote Zeile ohne Fehlermeldung ausgegeben wird.Ich habe bei mir zum Testen die Daten aus einer PHP-Datei gezogen. Diese hatte nach jeder Zeile einen Zeilenumbrucht. Daher \r.
Das CGI-Skript liefert die Daten moeglicherweise anders formatiert, wuerde ich hier vermuten. -
Hallo habe die Vorschläge getestet. Leider ohne Erfolg.
Bitte nicht aufgeben.Hier nochmal das komplette Skript
PHP
Alles anzeigen<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Heizkessel Status</title> <style type="text/css"> * { background-color: #CFCFCF; font-family: Arial; font-size: 16px; width: 450px; } h1 { font-size: 22px; } table { background-color: #FFFFFF; } </style> </head> <body> <h1 align="center">Guntamatic Powerchip Status</h1> <?php $email = "XXXXXXXX@gmx.at"; $_url = "http://10.0.0.100/daqdata.cgi"; $grenzeascheleeren = 8; $_buffer = implode('', file($_url)); $lines = explode("\n", $_buffer); $betrieb = $lines[78]; $programm = $lines[79]; $ascheleeren = $lines[108]; $kesseltemp = $lines[3]; $leistungStokerSchneckeProzent = $lines[8]; $leistungStokerAmpere = $lines[9]; $leistungRaumaustragungA1Prozent = $lines[11]; $leistungRaumaustragungAmpere = $lines[12]; $CO2 = $lines[18]; $kesselleistung = $lines[95]; $FEHLERMELDUNG = $lines[96]; $FEHLERZEITPUNKT = $lines[97]; ?> <table border='0'> <tr> <th>Bezeichnung</th> <th>Wert</th> </tr> <tr> <td>Betrieb</td> <td><?php echo $betrieb; ?></td> </tr> <tr> <td>Programm</td> <td><?php echo $programm; ?></td> </tr> <tr> <td>Kesseltemperatur</td> <td><?php echo $kesseltemp; ?> °C</td> </tr> <tr> <td>Kesselleistung</td> <td><?php echo $kesselleistung; ?> %</td> </tr> <tr> <td>Ascheleeren</td> <td style="background-color:#<?php if ($ascheleeren < $grenzeascheleeren) { echo "FF0000"; } else { echo "#FFFFFF"; } ?>"><?php echo $ascheleeren; ?> Stunden</td> </tr> <tr> <td>Leistung Stokerschnecke</td> <td><?php echo $leistungStokerSchneckeProzent; ?> %</td> </tr> <tr> <td>Leistung Stoker</td> <td><?php echo $leistungStokerAmpere; ?> Ampere</td> </tr> <tr> <td>Leistung Raumaustragung A1</td> <td><?php echo $leistungRaumaustragungA1Prozent; ?> %</td> </tr> <tr> <td>Leistung Raumaustragung</td> <td><?php echo $leistungRaumaustragungAmpere; ?> Ampere</td> </tr> <tr> <td>CO<sub>2</sub></td> <td><?php echo $CO2; ?> </td> </tr> <?php if ($FEHLERMELDUNG != "") { echo "<tr><td colspan='2' style='background-color:#FF0000'>$FEHLERMELDUNG $FEHLERZEITPUNKT</td></tr>"; $text = "Meldung vom Kessel:\r\nFehlermeldung: $FEHLERMELDUNG\r\nFehlerzeitpunkt: $FEHLERZEITPUNKT"; $var = mail($email, "Kesselmeldung", $text, "From:$email"); if (!$var) { echo "<p><b>FEHLER BEI EMAILVERSAND!</b></p>"; } } ?> </table> </body> </html>
-
Hallo,
Ich werde das heute Abend nochmal durchtesten.
Vielleicht waere es dazu hilfreich, wenn du mir nochmal die Ausgabe der CGI liefern koenntest.
Hierfuer in der Zeile nach $_buffer = ... folgende Zeile einfuegen:
Moeglicherweise sehe ich so, welche Formatierungen hier vorgenommen wurden.
Am besten daher einmal den Inhalt der Seite und einmal den Seitenquelltext posten. -
Zitat von "TobiasK"
Hierfuer in der Zeile nach $_buffer = ... folgende Zeile einfuegen:
Da würde ich doch eher über die Konsole unddirekt die cgi aufrufen,
damit wird eine Datei "ofen.cgi" ohne Veränderungen in Public geschrieben, bzgl. Zeilenumbruch (\r\n usw.) -
Ok. Mach ich. Aber erst in zwei Stunden. Mfg
-
ich habe die Datei. ich bin online. am einfachsten wäre wenn du per pn mir deine mailadresse gibst.
dann sende ich dir die cgi Datei. ok? -
Hallo.
Das mit der roten Zeile klappt jetzt.die php.ini ist bei mit auf den Standardwerten. aber hier gebe ich sie jetzt trotzdem rein.
Code[PHP]engine = Onshort_open_tag = Onasp_tags = Offprecision = 12y2k_compliance = Onoutput_buffering = Offzlib.output_compression = Offimplicit_flush = Offunserialize_callback_func=serialize_precision = 100allow_call_time_pass_reference = Onsafe_mode = Offsafe_mode_gid = Offsafe_mode_include_dir = safe_mode_exec_dir =safe_mode_allowed_env_vars = PHP_safe_mode_protected_env_vars = LD_LIBRARY_PATHdisable_functions =disable_classes =expose_php = Offmax_execution_time = 86400 ; Maximum execution time of each script, in secondsmax_input_time = 86400 ; Maximum amount of time each script may spend parsing request datamemory_limit = 128M ; Maximum amount of memory a script may consumeerror_reporting = E_ALL & ~E_NOTICEdisplay_errors = Offdisplay_startup_errors = Offlog_errors = Offlog_errors_max_len = 1024ignore_repeated_errors = Offignore_repeated_source = Offreport_memleaks = Ontrack_errors = Offvariables_order = "EGPCS"register_globals = offregister_argc_argv = Ongpc_order = "GPC"magic_quotes_gpc = Onmagic_quotes_runtime = Off magic_quotes_sybase = Offauto_prepend_file =auto_append_file =default_mimetype = "text/html"doc_root =user_dir =include_path = ".:/etc/config/php"extension_dir = /usr/local/apache/modulesenable_dl = Onpost_max_size = 2047Mfile_uploads = Onupload_max_filesize = 2047Mallow_url_fopen = Ondefault_socket_timeout = 300upload_tmp_dir = /share/Webextension = sqlite.so[Syslog]define_syslog_variables = Off[mail function]SMTP = localhostsmtp_port = 25sendmail_path = /usr/sbin/sendmail -t -i[Java][Date]date.timezone = "Asia/Taipei"[SQL]sql.safe_mode = Off[ODBC]odbc.allow_persistent = Onodbc.check_persistent = Onodbc.max_persistent = -1odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 [MySQL]mysql.allow_persistent = Onmysql.max_persistent = -1mysql.max_links = -1mysql.default_port =mysql.default_socket = "/tmp/mysql.sock"mysql.default_host =mysql.default_user =mysql.default_password =mysql.connect_timeout = 60mysql.trace_mode = Off[mSQL]msql.allow_persistent = Onmsql.max_persistent = -1msql.max_links = -1[PostgresSQL]pgsql.allow_persistent = Onpgsql.auto_reset_persistent = Off pgsql.max_persistent = -1pgsql.max_links = -1pgsql.ignore_notice = 0pgsql.log_notice = 0[Sybase]sybase.allow_persistent = Onsybase.max_persistent = -1sybase.max_links = -1sybase.min_error_severity = 10sybase.min_message_severity = 10sybase.compatability_mode = Off[Sybase-CT]sybct.allow_persistent = Onsybct.max_persistent = -1sybct.max_links = -1sybct.min_server_severity = 10sybct.min_client_severity = 10[dbx]dbx.colnames_case = "unchanged"[bcmath]bcmath.scale = 0[browscap][Informix]ifx.default_host =ifx.default_user =ifx.default_password =ifx.allow_persistent = Onifx.max_persistent = -1ifx.max_links = -1ifx.textasvarchar = 0ifx.byteasvarchar = 0ifx.charasvarchar = 0ifx.blobinfile = 0ifx.nullformat = 0[Session]session.save_handler = filessession.use_cookies = 1session.name = PHPSESSIDsession.auto_start = 0session.cookie_lifetime = 0session.cookie_path = /session.cookie_domain =session.serialize_handler = phpsession.gc_probability = 1session.gc_divisor = 100session.gc_maxlifetime = 1440session.bug_compat_42 = 1session.bug_compat_warn = 1session.referer_check =session.entropy_length = 0session.entropy_file =session.cache_limiter = nocachesession.cache_expire = 180session.use_trans_sid = 0url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="session.save_path = /share/CACHEDEV1_DATA/.php_session[MSSQL]mssql.allow_persistent = Onmssql.max_persistent = -1mssql.max_links = -1mssql.min_error_severity = 10mssql.min_message_severity = 10mssql.compatability_mode = Offmssql.secure_connection = Off[Assertion][Ingres II]ingres.allow_persistent = Oningres.max_persistent = -1ingres.max_links = -1ingres.default_database =ingres.default_user =ingres.default_password =[Verisign Payflow Pro]pfpro.defaulthost = "test-payflow.verisign.com"pfpro.defaultport = 443pfpro.defaulttimeout = 30[com][Printer][mbstring][FrontBase][exif][Crack]; End:
Vielleicht findet je jemand den Grund warum keine Nachrichten von diesem Skript gesendet werden, es aber mit dem testskript funktioniert.
Um Fehler anzuzeigen habe ich "Display error" und "log error" auf on gesetzt. Ich bekomme aber keine Fehlermeldungen.
Ich gehe davon aus das ich "log error" bei den systemverbindungsprotokollen finde.
Ich habe bei der Heizung einen Fehler verursacht ( Tür auf ) und dann die Seite vom PC aus geöffnet. Ich bekomme auf der Seite zwar die Störung, aber es wird kein Programmierfehler angezeigt. Und auch keine Mail gesendet.--- ModEdit ---
Habe einen Verdacht!
kann es sein das es an einem Falschen Port liegt?
auszug php.iniDer smtp port bei gmx ist aber 465?!?
Sollte ich nur den Port Ändern oder auch bei SMTP auch auf mail.gmx.net ändern? Wenn ja, passt dann der "sendmail_path"???? -
Hallo,
Da das Testskript ja funktioniert hat, gehe ich davon aus, dass der Port richtig ist.
Es wird ja sowieso (wenn ich es richtig verstanden habe) eine Email an den lokalen Email-Server (localhost:25) gesendet. Und dieser sendet dann mit dem Skript sendmail die Email raus. Der "richtige" Versender ist ja von dir ueber die Webadministrationsseite korrekt eingerichtet.Ich kann dir bezueglich der php.ini auch sagen, weshalb hier keine Meldungen anzegeigt werden. Groessere Fehler sind in dem Skript nicht drin, da es ja schon laeuft.
Um alle Fehler anzuzeigen musst du die entsprechende Zeile fuer error_reporting wiefolgt abaendern
Derzeit wird gesagt, er solle alle Fehler reporten, ausser den Notices. Aber grade auf die koennte es hier moeglicherweise ankommen. -
Ok. Teste ich morgen
-
Dann hoffe ich mal, dass der zumindest irgendwelche hilfreichen Meldungen ausspuckt, denn langsam gehen mir die Ideen aus.
-
Hallo.
Bin gerade nicht Zuhause. Google gerade herum.
Ich las das möglichweise das mail versendet wird, aber von gmx nicht angenommen wird da der Absender nicht passt.
Dort half man sich in der php.ini mit dem eintrag 'sendmail_from = meinemail.gmx.at'
was haltest du davon? -
Hast du für das PHP-Script die selbe E.Mail adresse verwendet, wie für die Systembenachrichtigung vom NAS ?
Wenn ich aus dem Script die Heizungsabfrage entferne, funktioniert es bei mir auch mit den Standardsettings der php.ini -
Ja. Es ist die gleiche mail Adresse
-
Zitat von "Zweckmair_B"
Dort half man sich in der php.ini mit dem eintrag 'sendmail_from = meinemail.gmx.at'
Ich denke, das bringt nichts, da ja sowieso die Mail nochmal uebereinen (wie es mir scheint) virtuellen EMail-Server des NAS geht.
Zumindest habe ich es nicht geschafft, den SendMail-Skript aus der php.ini zu entfernen. Nach jedem Speichern, wurde er wieder eingefuegt, andere Einstellungen wurden aber uebernommen. -
Hallo.
Morgen werde ich wie gesagt das mit den Fehlermeldungen probieren.
Ein paar Fragen hätte ich da noch:
*Du hast was vom internen virtuellen mailserver gesprochen. Also ich habe eine Menge Arten von Server vorinstalliert, aber ein Mailserver ist nicht dabei. Muß ich den Nachinstallieren? (qpkg xmail oder xeams)
*was bewirkt die Funktion "Register globals" beim Webserver? ist bei mir abgeschaltet -
Hallo,
Ich gehe davon aus, dass da so ein virtuelles Server laueft, der hinter dem Skript in der php.ini liegt. Falls das irgendwie anders ist, moege man mich bitte korrigieren.
Die "Register Globals" wuerde ich auch weiterhin ausgeschaltet lassen. Daran wird es nicht liegen, denn bei mir sind sie auch deaktiviert.
Diese scheinen nur einen Sicherheitsaspekt bezueglich Variablendeklaration zu haben. Und derr sichere Modus ist, wenn diese deaktiviert sind.