Ga naar inhoud
  • 0

CWP / PHP: Interne serverfout


hbrendel

Vraag

FM Server 9 op een Xserve met Mac OS X Server 10.5.6

 

Wanneer ik via PHP een script laat uitvoeren, dan krijg ik een lege pagina te zien. Safari's Activiteitenoverzicht geeft aan: "interne serverfout".

 

Ik heb op de bewuste php-pagina diverse tests gedaan. Zowel bij newPerformScriptCommand () als bij setPreCommandScript () treedt dit op. Het script wordt op de server correct uitgevoerd. Daarna vindt er geen output naar de browser meer plaats. Het resultaat is een blanke pagina zonder broncode. Voordat de scriptopdracht in de php werd aangebracht genereerde de server een correcte pagina.

 

Ik heb alle logfiles van FM server bekeken, maar deze helpen mij niet verder.

Link naar reactie

10 antwoorden op deze vraag

Aanbevolen berichten

  • 0

PHP is erg strict met komma's, brackets ed.

Meestal als er zo'n heel klein foutje in je script staat krijg je helemaal geen html output meer terug.

In je filemaker error log zal je ook de oplossing niet vinden, dus dat klopt dan ook met jouw probleem.

Ik denk dat er een klein foutje in je PHP script zit (kan ook een include zijn die hij niet vindt o.i.d.

Succes, Niels

Link naar reactie
  • 0

Hallo,

 

Alles wijst inderdaad op een foutje in je PHP code. Voor test doeleinden stel je in het php.ini bestandje de error_reporting in op 'E_ALL' (en niet op de standaard 'E_ALL & ~E_NOTICE).

 

Kan je in je eigenste PHP scriptje ook nog aanpassen door volgende regel bovenaan in te voegen:

ini_set('error_reporting', 'E_ALL');

 

Vergeet zeker geen ';' om elke regel af te sluiten, of PHP genereert een fatale fout. Post eventueel hier je code.

 

Groeten

 

Jeroen

Link naar reactie
  • 0

He Niels en Jeroen,

 

Bedankt voor de reacties.

 

Ik heb de programmmaregel van Jeroen geprobeerd, maar het resultaat is hetzelfde (lege pagina). Ook heb ik de bewuste pagina vervangen door een backup waarvan ik zeker was dat hij functioneerde, en ook deze doet het niet meer. Voeg hierbij nog dat ik na nauwkeurig naspeuren heb vastgesteld dat er beslist geen syntax-fouten in de php zitten en ik moet tot de conclusie komen, dat het aan de database ligt. Ook daaraan was ik bezig op het moment dat de storing optrad.

 

Ik ga hier nu mee bezig en ik laat het wel weten.

Link naar reactie
  • 0

Ik heb de database opnieuw gemaakt, hij was niet zo groot... :?

 

De pagina werkt weer goed, zolang ik er geen scriptcommands in zet. Zo gauw als ik dat doe is het weer mis: lege pagina, maar het script is wel uitgevoerd!

 

Ter verduidelijking hier twee codefragmenten:

 

1. Zonder

$fm2 = new FileMaker ('tdTemp', $serveripadres, $_SESSION ['username'], $_SESSION ['password']) ; 
$trekkenFind = $fm2 -> newFindCommand ('trekken') ; 
$trekkenFind -> addFindCriterion ('Code', '==' . $_SESSION ['theater']) ; 
$trekkenResult = $trekkenFind -> execute () ; 

2. Met

$fm2 = new FileMaker ('tdTemp', $serveripadres, $_SESSION ['username'], $_SESSION ['password']) ; 
$trekkenFind = $fm2 -> newFindCommand ('trekken') ; 
$trekkenFind -> addFindCriterion ('Code', '==' . $_SESSION ['theater']) ; 
$trekkenFind -> setPreCommandScript ('MaakTreklijst', $_SESSION ['theater']) ; 
$trekkenResult = $trekkenFind -> execute () ; 

Schiet mij maar lek...

Link naar reactie
  • 0

Henk, misschien even volgende open deuren intrappen:

 

- weet je zeker dat $_SESSION ['theater'] bestaat en een waarde bevat?

- Bevat je FileMaker script niet-web compatibele script steps

- In het geval $_SESSION ['theater'] , kan je mss eens proberen er quotes rond te zetten?!

 

Vang ook altijd fouten af, na Command->execute(), door te checken

if(FileMaker::isError($trekkenResult) {
 echo "Er trad een fout op: " . $trekkenResult->getMessage() ;
 exit ;
}

 

... of zoietss

 

Je syntax lijkt in elk geval ok.

Link naar reactie
  • 0

Die foutafvanging zit er al in, maar heeft hier geen zin, want er wordt niets, ook geen ErrorObject geretourneerd, dat had ik al uitgedokterd door

echo '' ; 
print_r ($trekkenResult) ; 
echo '' ; 
exit () ; 

op verschillende plaatsen te proberen.

 

$_SESSION ['theater'] bestaat en bevat de juiste waarde, dat blijkt uit het succesvol uitvoeren van het script.

 

Mijn script bevat ook geen niet-web compatibele scriptstappen. Maar ik bedenk nu wel dat de database in FM 10 wordt gemaakt, en dat de server FMS 9 is... Daar staat tegenover dat het script correct wordt uitgevoerd. Het duurt wel een paar seconden, maar daar zou $trekkenFind -> execute () toch op moeten wachten, dunkt mij.

 

Zijn er scriptstappen in 10 compatibel geworden die dat in 9 niet waren? Hier ga ik even naar zoeken. En ik ga nog een ander script uitproberen.

 

Dat van die quotes lijkt mij eerlijk gezegd onzin, want dan wordt de scriptparameter: "$_SESSION ['theater']" i.p.v. de gewenste theatercode.

 

Ik kom er nog op terug. In ieder geval bedankt.

Link naar reactie
  • 0

Ik word er nu echt helemaal gestoord van.

 

Een nieuw script 'Test' met als enige scriptstap 'New Record/Request' wilde wel. Mijn conclusie: dat andere script deugde niet.

 

Langzaam steeds iets nieuws toevoegen. Het ging direct al mis bij de eerste scriptstap Set Field. Dit was wel een global. Veld gewijzigd in non-global. Het maakt allemaal niets uit, sinds de internal server error weer is opgetreden gaat er niets meer goed, ook niet een nieuw gemaakt identiek script 'Test' dat het eerst wel deed.

 

En wat erger is: Na het weghalen van de regel met '... setPreCommandScript ...' werkt de hele pagina ook niet meer. Het lijkt wel of de database nu corrupt is geworden. Daarmee ben ik dus weer even ver als toen ik dit topic startte.

 

Ik zou het nu echt niet meer weten...

Link naar reactie
  • 0

Vreemd, inderdaad.

 

Omdat mijn nieuwsgierigheid geprikkeld was, heb ik het net geprobeerd met

- FMS10, 1 machine config

- FM API 10 (opletten bevat enkele toevoegingen tov FM API 9, maar ik denk niet dat dat het probleem is)

- Test Replace Field Contents

- Test Set Field

- Test met account die geen schrijfrechten heeft

- Test met numerieke parameter ipv string

- Test met veld validaties

 

... en alles werkt normaal, zoals je verwacht, zonder foutmelding. Script wordt desgevallend niet verder uitgevoerd, maar mijn webpagina verschijnt telkens wel normaal.

 

Kijk zeker de log eens na van de WPE. Gebruik eventueel Firefox met Firebug: daarmee kan je de juiste return code (bv. 501) van de server achterhalen

 

Veel geluk

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...