Avatar billede moddi100 Seniormester
16. oktober 2008 - 14:33 Der er 18 kommentarer og
1 løsning

Tjek om fil indeholder php-fejl (fx syntaksfejl) inden include()

Hej

Jeg har lavet et system, der skal 'loade' forskellige filer under opstart. Når jeg kalder index.php skal den tjekke om f.eks. side2.php indeholder fatale fejl, der får scriptet til at stoppe. Det kan f.eks. være syntaktsfejl osv.

Hvordan kan jeg tjekke om filen, der skal inkluderes, indeholder sådanne fejl?
Og er det muligt på nogen måde at inkludere en fil i en funktion for derefter at have adgang til den overalt?

- Morten
Avatar billede olebole Juniormester
16. oktober 2008 - 14:44 #1
<ole>

Jeg forstår ikke rigtig. En fil med syntaks- eller andre fejl, må da aldrig lande på en server. Du må nok forklare lidt mere om, hvordan scenariet ser ud  =)

/mvh
</bole>
Avatar billede moddi100 Seniormester
16. oktober 2008 - 14:51 #2
For sjov skyld er jeg ved at lave et CMS-system. Her kan der jo så oprettes/ændres/slettes i filer. Jeg har så en mappe der hedder sider, hvor alle de sider man kan ændre/oprette ligger i. Man kan så lave sin egen menu. Hvis nu man kommer til at lave noget der giver fejl, er det jo ikke så smart hvis det går ind og stopper siden fra at se, så man ikke kan rette fejl. Lad os sige at man glemte et semikolon i menufilen, så hver gang siden indlæses vil fejlen stoppe scriptet og man kan derved ikke ændre fejlen...
Avatar billede showsource Seniormester
16. oktober 2008 - 19:34 #3
Du kan

if(false == include("fil.php")) {
echo"No good";
}

Men, fil.php kan så IKKE indeholde f.eks. return midt i det hele.
Avatar billede moddi100 Seniormester
17. oktober 2008 - 12:38 #4
Showsource > Syntaksfejl vil stadig stoppe scriptet
Avatar billede moddi100 Seniormester
17. oktober 2008 - 14:06 #5
Jeg ved som sagt ikke hvordan det kan laves, men jeg har kigget lidt om jeg kunne finde en funktion, der henter outputtet af en fil f.eks. html. Jeg har dog bare ikke kunnet finde en sådan funktion.
Avatar billede showsource Seniormester
18. oktober 2008 - 09:11 #6
Avatar billede moddi100 Seniormester
19. oktober 2008 - 11:37 #7
Det var måske en mulighed, men får så stadigvæk problemer med f.eks. syntaks/parse fejl
Avatar billede moddi100 Seniormester
06. december 2008 - 14:51 #8
Smid et svar showsource. Fandt aldrig en smartere løsning.
Avatar billede showsource Seniormester
06. december 2008 - 19:09 #9
njahh, du fik jo ikke en løsning du bruger?
Avatar billede moddi100 Seniormester
06. december 2008 - 19:26 #10
Har faktisk sat det op, så den bruger min egen error-handler salvom det er ret formålsløst. En syntaktsfejl stopper jo stadigvæk scriptet.

Ikke nogen ideer til hvordan man kan finde og evt, hindre sådanne fejl? Der er ikke en eller anden smart ukendt ting konfiguration i ini-filen der kan hjælpe med dette?
Avatar billede showsource Seniormester
06. december 2008 - 19:39 #11
hmm, et @ foran vil jo altid hindre fejlmeddelser.
Eller
error_reporting = 0;
i php.ini

D.v.s. at at script vil afvikle uanset fejl.
At der så er nogen ting som ikke gøres/vises, well.....

<?php

$envar = "noget";

include("fil.php");

?>

fil.php:

<?php
if(iset($envar)) { // fejl p.g.a. iset og ikke isset
exit;
}

echo"Noget";

?>

Umidelbart vil jeg mene at fil.php vil printe "Noget" til browseren, hvis der ingen fejl skal vises.

Hvordan du så har lavet din error handler, er en helt anden snak.
Avatar billede showsource Seniormester
06. december 2008 - 19:42 #12
Og b.t.w. jeg har ingen erfaring med at lave sin egen error handler!
Avatar billede moddi100 Seniormester
07. december 2008 - 00:16 #13
Et @ foran include() gør bare at fejlene ikke vises, men syntaksfejl stopper stadigvæk udførelsen.

Det samme gælder hvis jeg skriver

<?php
error_reporting(0);
include('fil2.php');
?>

har dog ikke prøvet at skrive det i php.ini
Avatar billede showsource Seniormester
07. december 2008 - 08:54 #14
hmm, ja, det gør den godt nok!
Avatar billede moddi100 Seniormester
07. december 2008 - 13:49 #15
Ved du om det hjælper at gøre det i php.ini eller i .htaccess? (Har ikke adgang til disse pt)
Avatar billede showsource Seniormester
07. december 2008 - 15:45 #16
Ikke for mig ihvertfald, windåze med php som LoadModule.
Avatar billede moddi100 Seniormester
03. maj 2009 - 10:14 #17
Hvis du vil have point skal du bare smide et svar, ellers tager jeg dem selv...
Avatar billede showsource Seniormester
03. maj 2009 - 12:24 #18
Du tager bare løs! :O)
Avatar billede moddi100 Seniormester
03. maj 2009 - 14:26 #19
i hvert fald tak for hjælpen, selvom der ikke kom noget difinitivt resultat.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester