php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.11.2009, 16:14  
Neuer Benutzer
 
Registriert seit: 09.11.2009
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
starwhooper befindet sich auf einem aufstrebenden Ast
starwhooper eine Nachricht über ICQ schicken starwhooper eine Nachricht über Skype™ schicken
Standard [Erledigt] Verarbeiten eines Fatal Error

Moin,
ich baue mit PHP und dem Software PHP-Arapi eine Verbindung zu einem Ticketsystem auf.
Zur besseren Veranschaulichung hier der entsprechende Befehl:
PHP-Code:
$Values arapi_getlistentrywithfields($formular,$suche,$suchfelder); 
Nun gibt es bei mir in der Firma oft Netzwerkprobleme und ich bekomme vom PHP folgendes zurück:
Code:
Fatal error: BMC Remedy AR System error (Internal error: The request ID for a multi-piece RPC response is invalid)
Da dieses Problem auch oft bei den Kollegen auftritt die das Ticketsystem per Windowsclient ansprechen, wird der Fehler nicht im PHP selber liegen. Ich habe nun aber das Problem, das mit dem Fatal Error das ganze Skript abbricht.

Daher nun die Frage ob es eine Möglichkeit im PHP gibt, mit der ich in Abbruch an diesem Fatal Error unterbinde und somit den Error auswerten kann ? Ich habe es schon mit folgendem versucht, aber es kommt zu keinem Eintrag in der Datei:
PHP-Code:
$Values arapi_getlistentrywithfields($formular,$suche,$suchfelder) or fwrite($fp,date('Y-m-d H:i:s').': Remedy Time-Out '.$formular."\n"); 
Gruß, Thiemo
starwhooper ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.11.2009, 16:49  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Kommt stark drauf an, woher der fatale Fehler kommt. Da gibt es durchaus Unterschiede. Was du probieren kannst, ist, dich in set_error_handler einzulesen. In 95% der Fälle bekommst du den Fehler dadurch zumindest abgefangen.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 09.11.2009, 17:04  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Ein Fatal-Error kann nicht abgefangen werden, das ist immer das Scriptende.
erc ist offline  
Alt 09.11.2009, 18:10  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Das stimmt nicht.
Zum einen wurden dort je nach PHP-Version im Zend Änderungen vorgenommen. Mit den aktuellen PHP-Versionen werden deutlich mehr Fehler an einen Error-Handler gemeldet als früher.
Zum zweiten gibt es für Extensions im Core zwei Möglichkeiten, Fehler zu melden. Und nicht beide führen von vornherein zu einem Zwangs-Abbruch.
Zum dritten gibt es in den User-Kommentaren der verlinkten Funktion für hartnäckige Fälle weitere Vorschläge.
Zum vierten kommt es stark drauf an, wie die Extension intern arbeitet. Es ist durchaus denkbar, dass der dort in der Fehlermeldung angegebene interne Fehler ebenfalls als Fehler getriggert wird auf einer Ebene, die man problemlos fangen kann.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 09.11.2009, 19:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Versuch doch mal, ob du den Fehler mit einem Error-Handler trotzdem fangen kannst. Vielleicht ist es ja nur ein E_USER_ERROR.
Chriz ist offline  
Alt 09.11.2009, 21:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Ein Fatal-Error kann nicht abgefangen werden, das ist immer das Scriptende.
Zitat:
Das stimmt nicht.
Zum einen wurden dort je nach PHP-Version im Zend Änderungen vorgenommen. Mit den aktuellen PHP-Versionen werden deutlich mehr Fehler an einen Error-Handler gemeldet als früher.
Zum zweiten gibt es für Extensions im Core zwei Möglichkeiten, Fehler zu melden. Und nicht beide führen von vornherein zu einem Zwangs-Abbruch.
Zum dritten gibt es in den User-Kommentaren der verlinkten Funktion für hartnäckige Fälle weitere Vorschläge.
Zum vierten kommt es stark drauf an, wie die Extension intern arbeitet. Es ist durchaus denkbar, dass der dort in der Fehlermeldung angegebene interne Fehler ebenfalls als Fehler getriggert wird auf einer Ebene, die man problemlos fangen kann.
Ich sehe da jetzt keinen Widerspruch. IMHO kann man den Programmabbruch von Fatal errors in der Tat nicht verhindern, selbst wenn die noch durch den Errirhandler gehen.

Zitat:
The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 09.11.2009, 22:32  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ist eben die Frage, ob es ein simulierter oder tatsächlicher Fatal-Error ist.
PHP-Code:
<?php
error_reporting
(E_ALL E_STRICT);
ini_set("display_errors"1);

function 
sayGoodbye()
{
    echo 
"byebye";
}

function 
error_handler()
{
    
$args func_get_args();
    
var_dump("ERROR"$args);
    
sayGoodbye();
    exit;
}
set_error_handler("error_handler");

trigger_error(E_ERROR);
Der Code wird zumindest komplett ausgeführt. Wie gesagt:
Zitat:
Versuch doch mal, ob du den Fehler mit einem Error-Handler trotzdem fangen kannst.
Chriz ist offline  
Alt 10.11.2009, 17:49  
Neuer Benutzer
 
Registriert seit: 24.06.2009
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
michfrm befindet sich auf einem aufstrebenden Ast
Standard

Es ist bedingt möglich mit Fatalen Fehler mit Hilfe von register_shutdown_function umzugehen, ein gute Erklärung dazu gibt es hier.
michfrm ist offline  
Alt 10.11.2009, 18:37  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von michfrm Beitrag anzeigen
Es ist bedingt möglich mit Fatalen Fehler mit Hilfe von register_shutdown_function umzugehen, ein gute Erklärung dazu gibt es hier.
Deswegen verwies ich auf das handbuch, wo exakt dies in den User-Kommentaren ebenfalls steht
Nichts für Ungut
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 10.11.2009, 20:24  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

A) Stil at its worst
B) Beendet wird das Script trotzdem.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
 


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
Failed to open dir und Fatal Error Aurec PHP Tipps 2009 2 23.08.2009 14:52
[Erledigt] Joomla php fatal error EinNickname PHP Tipps 2009 7 13.07.2009 11:32
require und redeclare | fatal error Chestarbargel PHP Tipps 2009 8 07.05.2009 11:35
[Erledigt] Fatal error: Call to a member function assign() on a non-object in ... Cheesy PHP Tipps 2008 11 08.10.2008 14:16
Fatal error: Call to undefined function imagecreatefromjpeg() filehop PHP Tipps 2008 15 27.09.2008 00:38
Fatal error: Call to undefined function virtual() in denizpascha080 Datenbanken 3 15.08.2008 00:24
Fatal error: Class 'HTML' not found in C:\xampp\htdocs\SMC\common.php on line 18 Raito PHP Tipps 2008 4 05.03.2008 16:17
Spionageversuch? Code-Injection? saibot PHP-Fortgeschrittene 24 06.10.2007 02:07
Fatal Error bei DB-Import über Consolenbefehl (Windows) PsychoEagle Datenbanken 2 01.10.2007 15:03
Fatal error? Aber wo? Fatal Error PHP Tipps 2007 13 29.12.2005 11:32
xmlrpc-epi kompilieren [gelöst] freq.9 Server, Hosting und Workstations 4 24.07.2005 21:45
[Erledigt] Fatal Error PHP Tipps 2005 11 21.05.2005 11:39
Fatal error: Allowed memory size of 8192 bytes exhausted at PHP Tipps 2005 11 06.03.2005 19:26
Fatal error: Call to undefined function: imagecreatefromjpeg DannyD PHP-Fortgeschrittene 10 05.12.2004 21:59
Fatal error: Cannot use string offset as an array in ... on PHP Tipps 2004 4 04.08.2004 16:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php fatal error, http://c.icq.com/error.phpc, fatal error php, php fatal error abfangen, http://www.php.de/php-einsteiger/61028-erledigt-verarbeiten-eines-fatal-error.html, php catch fatal error, php catchfatalerrors, http://www.icq.com/error.phpc, php fatal error fangen, php fehler verarbeiten, http://www.icq.com/error.php, fatal error unterbinden php, php fatal error unterbinden, fatal error: php, \http://c.icq.com/error.phpc\, php fatal error verarbeiten, php fatal error:, fatal error verarbeiten, fatal error abfangen php, php memory exhausted, abbruch verhindern

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:50 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