Jump to content
  • 0

CWP / PHP: Interne serverfout


hbrendel

Question

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 to comment

10 answers to this question

Recommended Posts

  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...