php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 09-12-2006, 12:51
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard Fehler bei include abfangen, wenn include-Datei fehlerhaft ist

Hallo,

ich habe ein Problem:
PHP4.4 wird genutzt
Ich muss über einen include-Befehl Klassen (als Unterprogramm) einbinden. Manchmal kommt es vor, dass die Funktionen dieser Klasse fehlerhaft sind bzw. der Code nicht in Ordnung ist.
Das Resultat: Mein Hauptprogramm stürzt ebenfalls ab und wird nicht mehr fortgesetzt. Ich bräuchte eine Möglichkeit, das Laden des Unterprogramms zu unterbinden, sofern dieses Fehlerhaft ist.
@include hilft nicht weiter.
Selbst wenn ich mit PHP5 arbeite und try-catch probiere, habe ich das selbe Resultat.
Vielleicht kann mir ja jemand weiter helfen.

Danke
Brit
Mit Zitat antworten
  #2 (permalink)  
Alt 09-12-2006, 13:05
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

file_exists() vorher einbauen?
Mit Zitat antworten
  #3 (permalink)  
Alt 09-12-2006, 13:08
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard file exists

Hab ich, das löst aber das Problem mit dem fehlerhaften Code nicht.
Mit Zitat antworten
  #4 (permalink)  
Alt 09-12-2006, 13:11
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum nicht?
Code:
wenn( benötigte dateien existieren )
   führe unterprogramm aus
sonst
   gibt eine fehlermeldung aus
Mit Zitat antworten
  #5 (permalink)  
Alt 09-12-2006, 13:13
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Datei existiert ja, sie hat "nur" Fehler. Und dieser Fehler veranlaßt mein Hauptprogramm, zu stoppen, ohne auch nur eine Fehlermeldung anzuzeigen.
Mit Zitat antworten
  #6 (permalink)  
Alt 09-12-2006, 13:14
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

kannst du evtl. ein minimales beispiel zusammenschreiben, um zu veranschaulichen, was du meinst?
Mit Zitat antworten
  #7 (permalink)  
Alt 09-12-2006, 13:19
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
if ($phpversion == 5)
{
    if (
file_exists($datei))
    {
        try
        {
            @include 
$datei;
        }
        catch (
Exception $e)
        {
            
$text_modul.="<h1>Daten nicht verfügbar</h1>";
            
$text_modul.= "Die angeforderten Daten können momentan nicht angezeigt werden.";
            
$text_modul.= "<p>Bitte kontaktieren Sie Ihren Administrator. <br/>";
            
$text_modul.= "Email: <a href='mailto:".$admin_mail."'>".$admin_mail."</a></p>";
            
        }
    }
}
else 
{
    if (
file_exists($datei) and @include $datei)
        ...

Mit Zitat antworten
  #8 (permalink)  
Alt 09-12-2006, 13:32
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
if (file_exists($datei) and @include $datei
dürfte m.w. sowieso nicht funktionieren.

was steht denn in der datei $datei drin, dass es probleme bereitet?
Mit Zitat antworten
  #9 (permalink)  
Alt 09-12-2006, 13:35
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielleicht achtest du darauf das in jeder datei ein error_reporting gesetzt ist. ansonsten sollte eigentlich ein fehler angezeigt werden.
schau doch mal in der php.ini nach ob da ein error reporting ausgeschaltet ist.
Mit Zitat antworten
  #10 (permalink)  
Alt 09-12-2006, 13:41
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. Der Befehl funktioniert, sofern die include-Datei in Ordnung ist.
2. in der include-Datei werden Daten aus einer Datenbank gelesen und aufgelistet und hundert tausende von anderen Aktionen ausgeführt (wäre zu langwierig, das alles zu beschreiben). Letztendlich ist es egal, WAS dort gemacht wird. Ich will ja nur wissen, ob es eine Möglichkeit gibt, den PHP-Interpreter zu überlisten, damit er mein Haupt-Programm weiter laufen läßt.

ganz einfaches Beispiel:
Programm 1:
PHP-Code:
print "Hauptprogramm";

$datei "unterprogramm.php";
if (
file_exists($datei) and @include $datei)
{
    print 
"Unterprogramm geladen";
}
else
{
    print 
"Unterprogramm fehlerhaft";

Programm 2:
PHP-Code:
print "Unterprogramm" 
Wenn ich das Hauptprogramm starte, bricht es ab, da das Unterprogramm einen Fehler hat (; fehlt).
Wenn ; eingesetzt wird, funktioniert alles.
Mit Zitat antworten
  #11 (permalink)  
Alt 09-12-2006, 13:42
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Error-reporting ist eingeschaltet. Nur wenn das Unterprogramm eine Klasse ist, kommt kein Fehler.
Mit Zitat antworten
  #12 (permalink)  
Alt 09-12-2006, 13:52
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

den parser kann man eigentlich nicht umgehen, syntaktische fehler sind soweit wichtig, dass man sie nicht einfach ausschalten kann.

vielleicht lässt sich display_errors() vor und nach der ausführung des kritischen blocks irgendwie einsetzen?
Mit Zitat antworten
  #13 (permalink)  
Alt 09-12-2006, 14:01
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

eventuell hilft das weiter:
bool php_check_syntax ( string file_name [, string &error_message] )


For technical reasons, this function is deprecated and removed from PHP. Instead, use php -l somefile.php from the commandline.


aber wie kann es eigentlich passieren, dass das unterprogramm parse-fehler enthält - testest du den code nicht vorher?
Mit Zitat antworten
  #14 (permalink)  
Alt 09-12-2006, 14:03
stickyr
 Newbie
Links : Onlinestatus : stickyr ist offline
Registriert seit: Dec 2006
Beiträge: 9
stickyr ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Funktion gibts erst ab PHP5 und wurde inzwischen schon wieder rausgenommen. Hilft also auch nicht wirklich weiter.
Mit Zitat antworten
  #15 (permalink)  
Alt 09-12-2006, 14:07
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Instead, use php -l somefile.php from the commandline.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHPDOCX

Microsoft Word Dokumente mit PHP erstellen

17.08.2018 Berni | Kategorie: PHP/ Components
Affiliate Tracking Software

Erstellen Sie Ihr eigenes Affiliate Portal.

17.08.2018 Berni | Kategorie: WEBMASTER/ AdManagement
LEPTON CMS ansehen LEPTON CMS

LEPTON CMS ist eine weiterentwickelte Ableitung (Fork) des CMS „WebsiteBaker“ der Version 2.8.1. Im Jahre 2010. Das Entwicklerteam hat den ursprünglichen „Geist” erhalten. Inzwischen wurde aber kräftig entwickelt.

13.08.2018 erpe | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:57 Uhr.