Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1 2
Bonjour,
j'ai suivi à la lettre le Quickstart de Zend (on peut même télécharger les fichiers sources).
Ma structure de dossiers est donc :
/application
/controllers
IndexController.php
/views
/scripts
/index
/index.phtml (page html de base)
boostrap.php (boostrap de l'application)
/data
/library
/Zend (framework)
/web (dossier publié par apache)
index.php (fichier bootstrap principal)
.htaccess
Fichier boostrap principal :
<?php // APPLICATION_PATH is a constant pointing to our application/ subdirectory. // We use this to add our "library" directory to the include_path, so that // PHP can find our Zend Framework classes. define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/')); set_include_path(APPLICATION_PATH . '/../library' . PATH_SEPARATOR . get_include_path()); // AUTOLOADER require_once "Zend/Loader.php"; Zend_Loader::registerAutoload(); // REQUIRE APPLICATION BOOTSTRAP try { require '../application/bootstrap.php'; } catch (Exception $exception) { echo '<html><body><center>' . 'An exception occured while bootstrapping the application.'; if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production') { echo '<br /><br />' . $exception->getMessage() . '<br />' . '<div align="left">Stack Trace:' . '<pre>' . $exception->getTraceAsString() . '</pre></div>'; } echo '</center></body></html>'; exit(1); } // DISPATCH Zend_Controller_Front::getInstance()->dispatch();
Fichier boostrap application :
<?php // APPLICATION_PATH define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/')); set_include_path(APPLICATION_PATH . '/../library' . PATH_SEPARATOR . get_include_path()); // AUTOLOADER require_once "Zend/Loader.php"; Zend_Loader::registerAutoload(); // REQUIRE APPLICATION BOOTSTRAP try { require '../application/bootstrap.php'; } catch (Exception $exception) { echo '<html><body><center>' . 'An exception occured while bootstrapping the application.'; if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production') { echo '<br /><br />' . $exception->getMessage() . '<br />' . '<div align="left">Stack Trace:' . '<pre>' . $exception->getTraceAsString() . '</pre></div>'; } echo '</center></body></html>'; exit(1); } // DISPATCH Zend_Controller_Front::getInstance()->dispatch();
Fichier IndexController :
<?php class IndexController extends Zend_Controller_Action { public function indexAction() { } }
Ce que je sais, c'est que je n'ai pas de problème au niveau de mon htaccess, car en mettant un simple echo "Hello" dans les fichiers boostrap, ca fonctionne.
De plus je n'ai strictement aucun log avec mon apache.
J'ai fait des tests en modifiant les chemins d'accès dans les boostrap et ca me génère bien des erreurs, j'en déduis donc qu'ils fonctionnent.
Ce qui m'etonne en fait c'est qu'il ne se passe strictement rien au niveau du controller.
J'ai rajouté du code pour logguer tout ca et il s'avère que j'ai des log au niveau de mes bootstrap mais jamais au niveau de mon indexAction().
Si j'enlève la méthode indexAction(), cela ne me génère pas d'erreur, j'ai toujours une page blanche. Je ne sais pas si c'est normal.
J'avoue que je ne sais plus quoi tenter, j'ai parcouru les forums sans trop de résultat.
I need help
Hors ligne
Dans mon exemple ca ne sert à rien, mais a termes ca permet de gérer des bootstrap spécifiques pour chaque appli. Ca m'interesse de pouvoir faire tourner plusieurs appli avec le même framework
Hors ligne
Heu, une question peut-être con, mais on ne sait jamais. Ton index.phtml n'est pas vide au moins, il est bien censé afficher quelque chose ? Tu as regarde le code source de la "page blanche" ?
Hors ligne
Active display_errors = yes dans ton php.ini
ou alors regarde les logs de ton serveur web (1er reflex à avoir !)
Hors ligne
neojick a écrit:
Ton index.phtml n'est pas vide au moins, il est bien censé afficher quelque chose ? Tu as regarde le code source de la "page blanche" ?
Le source de mon index.pthml :
<h1 align="center"> Hello, Zend Framework MVC! </h1>
Autant dire qu'on peut difficilement faire plus simple Je ne peux pas regarder le code HTML de la page blanche de mon boulot là à cause du proxy, j'ai une erreur Zero Sized Reply. Je checkerai ca ce soir de chez moi.
nORKy a écrit:
Active display_errors = yes dans ton php.ini
ou alors regarde les logs de ton serveur web (1er reflex à avoir !)
Mon souci est que je suis sur un serveur mutualisé, je n'ai donc pas la main sur le fichier php.ini
Sinon comme je l'ai dit, je n'ai strictement aucune erreur dans les log de mon apache...
Hors ligne
C'est un serveur mutualisé et tu as la main sur les logs des apaches ???
ini_set('display_errors', true);
Error_reporting(E_STRICT);
Hors ligne
En fait je suis sur une dedibox avec des amlis sur laquelle nous avons ajouté ISP Config. Ce qui nous permet de gérer différents utilisateurs et sites facilement par une interface web.
ISP Config, en fait va s'occuper de créer les user, configurer des virtualhost apache, les bases de données etc...
Pour info j'ai déjà un site qui tourne avec un Zend Framework 1.4 ou 5 je sais plus. Et mon modèle ne me permettait pas de gérer plusieurs sites sur le même framework, c'est pour cela que j'ai décidé de repartir à 0 pour cette version 1.6 qui m'intéresse énormément grâce à l'intégration de Dojo. Je sais donc qu'il n'y a pas d'incompatibilité en ISP Config et Zend framework.
Apache est donc configuré de telle sorte que chaque site est un virtual host qui a un user unix associé et des fichiers de log apache (web acces et error) unique à chacun.
En rajoutant
ini_set('display_errors', true);
Error_reporting(E_STRICT);
cela ne change strictement rien : je n'ai aucune ligne de rajouté dans mon log web acces (ce que je ne comprends pas) alors que si par ex je change un chemin d'acces de mon bootstrap, j'ai bien une ligne d'erreur en + dans mon log d'erreur.
Hors ligne
Dans ce cas, c'est que tu n'as pas d'erreur..
Une die, un exit qq part ?
Hors ligne
non aucun die() et un seul exit(1) au niveau de :
try {
require '../application/bootstrap.php';
} catch (Exception $exception) {
echo '<html><body><center>'
. 'An exception occured while bootstrapping the application.';
if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production') {
echo '<br /><br />' . $exception->getMessage() . '<br />'
. '<div align="left">Stack Trace:'
. '<pre>' . $exception->getTraceAsString() . '</pre></div>';
}
echo '</center></body></html>';
exit(1);
}
dans mon bootstrap principal.
Le code source de la page blanche est complètement vide. J'ai essayé de faire des echo dans des méthodes init() __construct() ou __call() de mon IndexController, mais aucun succès.
J'ai vérifié par un echo si le chemin d'accès passé pour setControllerDirectory et il est tout a fait correct.
J'ai vraiment l'impression que mon IndexController est jamais appelé
Dernière modification par verrec_s (08-11-2008 17:14:10)
Hors ligne
oui j'ai testé, en faisant /index ou /index/index ou même /toto c pareil -> page blanche
Hors ligne
je viens de l'installer, et oui, c'est pareil
sauf que cette fois g des log appache
access.log :
127.0.0.1 - - [09/Nov/2008:18:06:18 +0100] "GET /index HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:06:18 +0100] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:06:19 +0100] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:06:45 +0100] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:09:38 +0100] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:09:38 +0100] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:09:39 +0100] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:09:42 +0100] "GET /toto HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:09:42 +0100] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [09/Nov/2008:18:09:42 +0100] "GET /favicon.ico HTTP/1.1" 200 -
Dernière modification par verrec_s (09-11-2008 18:14:03)
Hors ligne
bon en fait apres avoir regardé il s'avère que les lignes
ini_set('display_errors', true);
Error_reporting(E_STRICT);
empèche de faire apparaitre les erreurs en local. Je ne sais pas pourquoi !
Si je mets un chemin bidon vers la classe Loader.php et que je laisse ces lignes, j'ai une page blanche. Si je les enlève, j'ai bien l'erreur qui apparait à l'écran.
En rajoutant des realpath() j'ai réussi à faire marcher le projet en local car j'étais sous windows et il y avait visiblement des problème de chemin.
En revanche, j'ai toujours une page blanche sur le serveur dedibox si je supprime le fichier IndexController.php par exemple !
Mais si je remets le IndexController avec une faute de syntaxe dans le fichier je vois bien une erreur.
Enfin g beau mettre des
echo "ok";
exit(1);
dans les fonctions indexAction() et même init() g jamais rien qui sort !
En gros g l'impression de ne plus avoir aucune trace juste après l'appel à Zend_Controller_Front::getInstance()->dispatch();
Hors ligne
Je t'envoie ca, pas de soucis rien de confidentiel.
Par contre je viens de faire un test très intéressant.
En prenant mon ancien site basé sur du ZF de version 1.0 (je crois) qui fonctionne parfaitement et que je mets simplement à jour le Zend framework avec la version 1.6 en remplacant le dossier Zend je rencontre le même problème !
Est ce possible que cela vienne d'un évolution du FWK?
Hors ligne
Oui c'est certainement le cas. Un renforcement de quelque chose dans le framework fait que tu ne peux plus utiliser ta façon de faire peut-être.
En tout cas, j'ai reçu ton mail, et en l'état actuel, ça fonctionne (sur xampp). Je verrais après manger ce qui pourrait "clocher".
Mais en regardant rapidos, je vois ceci :
$this->view->render('Index/index.phtml');
Avec une majuscule à Index ... ça pourrait expliquer pourquoi ça fonctionne sur xampp mais pas sur ton serveur linux, puisque ton dossier s'écrit avec une minuscule.
Dernière modification par neojick (14-11-2008 21:23:43)
Hors ligne
Non, ca ne change rien mais bon ap
Dernière modification par verrec_s (14-11-2008 21:35:35)
Hors ligne
Hum, moi ça marche nickel en local, là je ne sais pas du tout ce qui peut causer un problème. A voir dans l'évolution du framework si y'a pas un composant qui n'était pas utilisé dans le 1.0 et qui l'est maintenant, et qui n'est pas sur ton serveur.
J'ai également une dedibox, avec une debian, les packages php basiques et je n'ai eu aucun soucis ...
Hors ligne
Ben du coup je me demande si ca vient pas de la "surcouche" ISP config...
Merci en tous cas pour le temps que tu m'as consacré
Je continue mes tests, si quelqu'un d'autre à une idée, elle est la bienvenue
Hors ligne
Non ISP Config y est pour rien. On l'utilisait où je bossais avant, et un des sites hébergés sur le serveur tourne avec le ZF 1.5. Y'a aucune raison qu'il soit en cause. En revanche, un paramètre dans php.ini .... je sais pas.
Hors ligne
Hum si c le cas je n'ai aucune idée d'ou ca peut venir
Hors ligne
hum faut absolument que tu récupères des traces d'erreur. Diagnostiquer une page blanche à l'aveugle, ça peut être hyper long.
ajoute au début de ton bootstrap :
ini_set('display_errors', true); Error_reporting(E_ALL);
et après l'initialisation de ton controller :
$controller->throwExceptions(true);
Là tu devrais avoir un message du ZF indiquant ce qui cloche.
A+, Philippe
Hors ligne
Pages: 1 2