Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'essaye depuis peu de me mettre à Zend pour la refonte complète de mon site.
J'ai suivi point par point le tutoriel FR Kitpages, que je trouve très bien. Donc tout se passe bien sauf :
Quand je demande l'affichage d'une page avec connexion à la base, j'obtiens l'erreur suivante :
Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host '***' in /usr/lib/ZendFramework-1.5.3/library/Zend/Db/Adapter/Pdo/Abstract.php:130
...plus pas mal d'autres lignes, je vous la fais courte !...
J'ai cru comprendre que c'était lié à une incompatibilité d'humeur entre les versions de PHP et de MySQL. Mais je n'ai pas trouvé de solution pratique.
Merci de votre soutien !
Autre question (tant que j'y suis) : Le tutoriel parle de fichier .log, de logger et compagnie, je n'y comprends strictement rien et je trouve aucun cours sur internet ! Le fichier .log, il faut le créer ? Ecrire quelque chose dedans ?
Ps : Merci d'utiliser des mots simples, je suis un newbie de l'informatique
Dernière modification par Bendjy (20-10-2008 10:52:41)
Hors ligne
Salut,
A première vue, il semble que tu as mal configuré ta connexion à ta base de données. Est-ce que tu pourrais nous donner le code de ton config.ini et celui de ton bootstrap ?
Ensuite concernant les logs, Apache écrit toutes les erreurs rencontrées dans un fichier error.log. Mais tu peux aussi activer cette écriture dans ZF, afin d'obtenir un fichier contenant toutes les erreurs rencontrées.
Pour cela, il faut que tu consultes la documentation au sujet de Zend_Log : http://framework.zend.com/manual/fr/zend.log.html
Hors ligne
Salut !
Pour l'instant, afin de faire le plus simple possible, je n'ai réalisé qu'un fichier index (toujours selon le tuto Kit Pages) ce qui donne :
<?php // mettre vos constantes ici... define("WEBAPP_DIR","/www/benjamin/mvc/"); define("MODEL_DIR",WEBAPP_DIR."/application/model"); define("ROOT_URL","http://dev.xxx.com"); define("BASE_URL", "/"); define("ZEND_FRAMEWORK_DIR","/usr/lib/ZendFramework-1.5.3/library"); define("LOG_FILE", ROOT_URL . "/test.log"); //connexion à la base de données define("DB_SERVER","https://phpmyadmin.xxx.com"); define("DB_PORT","21"); define("DB_NAME","benjamin"); define("DB_USER","benjamin"); define("DB_PASSWORD","***"); define("DB_TYPE","Pdo_Mysql"); set_include_path( ".".PATH_SEPARATOR. MODEL_DIR.PATH_SEPARATOR. ZEND_FRAMEWORK_DIR.PATH_SEPARATOR. get_include_path() ); require_once 'Zend/Loader.php'; // Registry init Zend_Loader::loadClass("Zend_Registry"); // Logger init Zend_Loader::loadClass('Zend_Log'); Zend_Loader::loadClass('Zend_Log_Writer_Stream'); $logger = new Zend_Log(); $logger->addWriter(new Zend_Log_Writer_Stream(LOG_FILE)); Zend_Registry::set("logger",$logger); Zend_Registry::get("logger") ->debug("** URI=".$_SERVER["REQUEST_URI"]); // Controller init Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Controller_Router_Rewrite'); $controller = Zend_Controller_Front::getInstance(); //Vérifier à terme si cette partie est vraiment utile, soit disant pour indiquer le chemin du controller et de l'action (com perso !) $router = new Zend_Controller_Router_Rewrite(); $cmtRoute = new Zend_Controller_Router_Route( "comment/:action/:comment", array( "comment"=>null, "controller"=>"comment", "action"=>"display" ) ); $router->addRoute("comment",$cmtRoute); $controller->setBaseUrl(BASE_URL); $controller->setControllerDirectory('application/controllers'); $controller->throwExceptions(true); // init viewRenderer Zend_Loader::loadClass("Zend_View"); $view = new Zend_View(); $viewRenderer = Zend_Controller_Action_HelperBroker:: getStaticHelper('viewRenderer'); $viewRenderer->setView($view) ->setViewSuffix('phtml'); // call dispatcher $controller->dispatch(); ?>
Donc pas de bootstrap, ni de config.ini, j'imagine que c'est pas très sécurisé, mais ça je verrai plus tard.
Concernant le serveur, c'est celui d'un pote qui héberge dessus une dizaine de site, est-ce que l'erreur viendrait de ça avec des problèmes de config ?
Merci Acharrex pour ta réponse, je vais de ce pas consulter ton lien.
Hors ligne
Je pense que la configuration de ta base de données est incorrecte.
Car déjà le port 21 est le port FTP, et non celui de MySQL par défaut (3306). Bon cela peut être modifié, mais peut être est-ce une erreur.
De plus, l'adresse du serveur MySQL ne correspond pas forcément à l'URL que tu utilises pour accéder à phpMyAdmin (donc pas forcément "https://phpmyadmin.xxx.com").
A mon avis, je te conseille de demander à ton ami les véritables accès à son serveur MySQL
Edit : tu n'effectues pas la connexion à la base de données dans ton bootstrap ? Ou est-ce un oubli ?
Dernière modification par acharrex (19-10-2008 18:06:44)
Hors ligne
Merci pour ces remarques, je vais effectivement attendre d'avoir les véritables infos d'accès au serveur !
Sinon pour l'instant je n'ai pas de bootstrap, je n'ai d'ailleurs pas compris l'utilité d'un tel fichier. Le code donné ci-dessus me lance bien IndexController.php par défaut.
Si j'ai bien compris (ce qui m'étonnerait ), le bootstrap c'est principalement ça :
// Controller init Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Controller_Router_Rewrite'); $controller = Zend_Controller_Front::getInstance();
Et ce code est dans mon fichier index.php
Il semble que j'ai les éléments de réponse à ma question concernant la connexion à la base, je posterai la solution au complet dés que possible !
Hors ligne
Salut à tous !
Effectivement ce n'était qu'un problème de configuration de la connexion à la base (Quelle aventure ! ) :
define("DB_SERVER","localhost");
define("DB_PORT","3306");
define("DB_NAME","benjamin");
define("DB_USER","benjamin");
define("DB_PASSWORD","***");
define("DB_TYPE","Pdo_Mysql");
Ceci fonctionne, par contre, mon hebergeur a aussi fait des modifs sur le fichier de config de mes dossiers... Est ce que ça a été décisif ??? JE sais pas !
Hors ligne
Pages: 1