Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Je développe avec le Zend Framework depuis sa version 0.6. J'ai principalement développé mon site en local avec Wamp. Je n'ai jamais rencontré de probleme particulier jusqu'a aujourd'hui. J'ai souhaité passé mon site en production (sur un serveur distant) mais là ... Page blanche lors de la génération de mon index et de mes autres controllers.
Apres avoir googleisé, j'ai lu des articles ou l'on conseille de mettre throwException à true, le display_error du php.ini à true, le error_reporting à All etc... Mais rien n'y fait ! Toujours cette fichue page blanche.
Ce qui me semble bizarre, c'est que j'ai essayé de faire des dump avec l'objet Zend_Debug et ça marche mais ma vue de mon controller ne s'affiche toujours pas.
Je suis sincèrement à court d'idée et je pense que dix cerveaux en valent mieux qu'un seul pour y réfléchir. Merci de votre aide
Hors ligne
Bonjour,
En général, ce qui change entre windows et unix, c'est :
- Les majuscules et le minuscules à surveiller de près (regarde notamment si tu as bien une majuscule au début de tes noms de fichier dans les controlleurs)
- le PATH_SEPARATOR à : et non à ;
Sinon est-ce que tu peux nous envoyer ton index.php et ta conf apache ? là on manque un peu de billes pour répondre
A+, Philippe
Hors ligne
Pas de soucis de majuscules concernant le nom des controllers.
Le PATH_SEPARATOR est bien à ":" concernant mon systeme unix.
index.php :
<?php /** * This is the index page. * * @author [DEFACED] */ require_once 'bootstrap.php'; Bootstrap::init(); Zend_Debug::dump('After Init'); Bootstrap::main(); Zend_Debug::dump('After Main'); ?>
bootstrap.php
<?php class Bootstrap { /** * Initialisation */ public static function init() { try { // Constantes if (ereg('localhost', $_SERVER['SERVER_NAME'])) { /*****************************************************/ /* Laptop parameters*/ define ('PATH_WEBINF', 'D:/_WORK/[DEFACED]/_docroot/WEB-INF'); define ('PATH_ZEND', 'D:/_WORK/Projects/Zend/library'); define ('PATH_LOG', 'D:/_WORK/[DEFACED]/_docroot/_log'); /*****************************************************/ define ('PATH_SEPARATOR', ':'); define ('PATH_CONFIGFILE', PATH_WEBINF.'/config.ini'); define ('BASE_HREF', '/love/'); // BASE HREF } else { define ('PATH_WEBINF', '/[DEFACED]/WEB-INF'); define ('PATH_ZEND', '/[DEFACED]/www/Zend'); define ('PATH_LOG', '/[DEFACED]/www/love/_log'); define ('PATH_SEPARATOR', ':'); define ('BASE_HREF', '/[DEFACED]/www/'); // BASE HREF define ('PATH_CONFIGFILE', PATH_WEBINF.'/config.ini'); } /** Définition des include path * - Rep. WEB-INF * - Rep. Zend Framework * - Rep. script courant * - Rep. déjà présent **/ set_include_path( '.'.PATH_SEPARATOR. PATH_WEBINF.PATH_SEPARATOR. PATH_ZEND.PATH_SEPARATOR. get_include_path() ); require_once 'Zend/Loader.php'; spl_autoload_register(array('Zend_Loader', 'autoload')); // Démarrage de la session Zend_Session::start(); $config = new Zend_Config_Ini(PATH_CONFIGFILE, 'sandbox'); // Error_reporting if ($config->debug) { error_reporting(E_ALL | E_STRICT); ini_set('display_errors', true); if (get_magic_quotes_gpc()) { die('<strong>E_NOOB_ERROR</strong>: magic_quotes_gpc must be turned off.'); } set_magic_quotes_runtime(false); } // TimeZone par défaut date_default_timezone_set($config->timezone); // setup database $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($db); // Router $router = new Zend_Controller_Router_Rewrite(); $router->addConfig($config, 'routes'); // Authentification $auth = Zend_Auth::getInstance(); // Définition des variables globales Zend_Registry::set('config', $config); Zend_Registry::set('auth', $auth); // Le controller $controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory(array( 'default' => PATH_WEBINF.'/default/controllers')); $controller->setRouter($router) ->setBaseUrl(BASE_HREF)->throwExceptions(true); //->returnResponse(true); } catch (Exception $e) { // Deprecated //self::onError($e); } } /** * Méthode principale */ public static function main() { $controller = Zend_Controller_Front::getInstance(); Zend_Debug::dump('test'); $response = $controller->dispatch(); Zend_Debug::dump('test'); /*if ($response->isException()) { $exceptions = $response->getException(); Zend_Debug::dump($exceptions); } else { $response->sendHeaders(); $response->outputBody(); }*/ } /** * Traitement d'erreur * Remplacer par le controller ErrorController * @deprecated */ public static function onError(Exception $e) { // En attendant une correction $config = true; if ($config) { echo '[[EXCEPTION]]<br />'; echo '{message} '.$e->getMessage().'<br />'; echo '{stackTrace} <pre>'.$e->getTraceAsString().'</pre>'; $ctrl = Zend_Controller_Front::getInstance(); Zend_Debug::dump($ctrl->getRequest()); } else { $writer = new Zend_Log_Writer_Stream(PATH_LOG); $logger = new Zend_Log($writer); $logger->emerg('[[EXCEPTION]] {message} '.$e->getMessage().' || {stackTrace} '.$e->getTraceAsString()); $logger = null; } } } ?>
Mon arbo :
WEB-INF/ /default /controllers /models /views /dao ...etc... www/ /styles ...etc...
IndexController.php:
<?php class IndexController extends Zend_Controller_Action { public function init() { //$this->initView(); } public function indexAction() { Zend_Debug::dump('INDEX'); } /** * Récupere les actions non existantes ! */ public function __call($method, $args) { if ('Action' == substr($method, -6)) { return $this->_forward('index'); } throw new Exception('Invalid method "' . $method . '" called'); } } ?>
Hors ligne
Hum... t'es bien sur la même version du ZF en prod et en dev ? (je sais c'est comme quand noos te demande si t'as branché ton ordinateur...). Parce que si tous tes logs s'affichent bien mais pas ta vue, ça ressemble à un ZF < 1.0.0-RC1 dans lequel le viewRenderer n'appelle pas les vues automatiquement....
Hors ligne
Non, les versions du ZF sont les mêmes
Je suis désespéré... J'ai beau retourner le problème dans tous les sens, je vois pas le soucis.
Il faut des modules spécifiques pour apache ou php pour que le framework fonctionne correctemeent ?
A mon avis, c'est du coté de ma conf serveur qu'il faut que je jette un oeil...
Hors ligne
Je viens de trouver une solution un peu bizarre... Comme si le viewRenderer ne fonctionnait pas.
Pour palier à la page blanche, il faut que dans mon controller Index je mette :
<?php class IndexController extends Zend_Controller_Action { public function init() { $this->initView(); } public function indexAction() { $this->view->render('Index/index.phtml'); } } ?>
En gros, que j'effectue un 'render' avec le chemin mon script à afficher. Pourquoi en local ça fonctionne et pas en prod ? Vous voyez un truc qui pourrait me renseigner ?
Hors ligne
dans ton répertoire views/scripts/, essaye de renommer ton répertoire Index en index (avec un i minuscule).
Philippe
Hors ligne
C'est à n'y rien comprendre...
Ce n'est pas ça :'(
Marre.... GRRRR
Je vois vraiment pas là ...
Hors ligne
Salut, je voulais savoir si tu avais résolu ton problème car j'ai exactement le même et je n'arrive pas à le résoudre
Hors ligne
Ayant transféré un site basé sur zend framework sur serveur de production. Je rencontre toujours également le problème de page blanche.
Pourtant :
- le rewrite_mod est bien activé
- version php 5.1.6
Merci bien pour votre aide
Hors ligne
C'est un peu vague comme indication.
Il y a plein de moyen de déboguer son code, mettre des traces depuis le début, est-ce le code arrive jusque dans le controller ? dans l'action ? est-ce qu'il arrive dans le script de vue ? dans le layout ? est-ce qu'il y a quelque chose dans le log Apache ou PHP ? Est-ce que la configuration des serveurs est identique ?
Etc...
Hors ligne
Salut,
Je ne sais pas s'il manque une partie de ton boostrap dans ce que tu as collé, mais je ne vois pas de startMvc().
A+ benjamin.
Hors ligne
Salut,
C'est en affichant les erreurs via ini_set('display_errors',true); et $front->throwExceptions(true); que j'ai pu résoudre mon problème. Une fois qu'on arrive à traquer les erreurs, les restes s'ensuivent.
Grand remerciement à vous tous, étant un newbie en zend, je commence vraiment à l'apprécier.
Hors ligne
Pages: 1