[ZEND/PHP] Blijf internal server errors krijgen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben net begonnen met Zend Framework. Het enige probleem is dat ik elke keer als er een fout in mijn code staat ik een 500 error krijg, i.p.v. een PHP syntax error of een door ZF gegenereerde error. Ik denk niet dat het aan mijn code ligt. Ik heb bijvoorbeeld in het bestand application/Bootstrap.php de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public function _initHtml() {
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $options = $this->getOptions();
        if (isset($options['resources']['view']['doctype'])) {
            $view->doctype($options['resources']['view']['doctype']);
        }
        if (isset($options['resources']['view']['encoding'])) {
            $view->setEncoding($options['resources']['view']['encoding']);
        }
        if (isset($options['resources']['view']['contentType'])) {
            $view->headMeta()->appendHttpEquiv($options['resources']['view']['contentType']);
        }
        if (isset($options['resources']['view']['keywords'])) {
            $view->headMeta()->appendName('keywords', $options['resources']['view']['keywords']);
        }
    }

Met de bovenstaande code krijg ik een internal server error. Als ik de doctype(), setEncoding() en headMeta() functies van $view niet meer aanroep gaat het wel goed. Als ik dan print_r(get_class_methods($view)) doe zie ik die functies ook nergens staan. Maar dan zou er toch een PHP of Zend error moeten komen?

Ik draai Zend Framework op mijn localhost (Windows 7 met Xampp).

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
De error-code 500 krijg je van Apache (zegmaar dezelfde error wanneer je een .htaccess misconfiguratie hebt)?

Je kan ZF configureren zodat geen enkele exceptie wordt opgevangen en doorgestuurd naar de ErrorController, maar dat ze gewoon doorgegooid worden. Dan zie je meteen in je browser wat er mis. Om dat te regelen, plaats je dit in de application.ini:

resources.frontController.throwExceptions = true

Zorgt dit voor meer duidelijkheid?
Verwijderd schreef op zondag 23 januari 2011 @ 14:14:
Als ik dan print_r(get_class_methods($view)) doe zie ik die functies ook nergens staan.
Deze "functies" komen uit view helpers. Aan Zend_View_Abstract zit een magic method __cal() vast. Deze laad de bijbehorende view helper en dirigieert de call door.

PHP:
1
$this->doctype('HTML5')

Dat gaat eigenlijk naar Zend_View_Helper_Doctype::direct() :)

[ Voor 33% gewijzigd door mithras op 23-01-2011 14:26 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De error code krijg ik inderdaad vanuit Apache. Het toevoegen van de regel aan application.ini geeft hetzelfde effect. Bedankt voor je uitleg over View helpers, dat maakt het wel iets duidelijker.

Pff, ik snap er niks van. Hoe kan het nu dat aan de hand van een stukje PHP code een 500 wordt gegenereerd?

[ Voor 14% gewijzigd door Verwijderd op 23-01-2011 14:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Laat maar, ik heb het al gevonden. Display errors op 1 zetten in application.ini. Ik vind het evengoed wel vreemd dat ik een 500 kreeg.

[ Voor 26% gewijzigd door Verwijderd op 23-01-2011 15:00 ]


Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11-09 19:49

Guldan

Thee-Nerd

Je zou ook eens kunnen proberen om 'display friendly http errors' in ie uit te zetten.

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Rename de .htaccess naar backup.htaccess en kijk of je nu wel de pagina kan bekijken.

Als je nu wel iets nuttigs ziet, dan ligt het aan je htaccess als je nog steeds niets ziet, zet dan in een lege htaccess even error_reporting en display_errors aan.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Als je apache-configuratie specifiek een ErrorDocument 500 heeft, dan wordt een 500 error die door PHP wordt geserveerd alsnog door Apache afgevangen en wordt de betreffende ErrorDocument getoond. Het kan ook zijn dat een PHP foutmelding sowieso als 500 wordt geïnterpreteerd. Ik heb eigenlijk nooit uitgezocht welke instellingen daarvoor zorgen, maar zomaar aannemen dat een 500 error die door Apache getoond wordt niet in de PHP zit is niet terecht :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1