Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-05-2009 04:48:04

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Mise en production

Bonjour a tous !

Tout d'abord, merci pour ce precieux site contenant de precieuses informations... wink

Apres m'etre arrache les cheveux que je n'ai pas (look Bruce Willis ^^) et harcele "Google mon ami" , je me decide a demander des avis ici.

J'ai fini de mettre en place une architecture Zend/Flex qui fonctionne nickel sur un serveur virtuel local (sur Zend Core Apache 2.2), j'ai tout uploade sur mon domaine public heberge par BlueHost. Probleme : les reecritures d'URL...
Cote controleurs, RAS. Le fichier index.php appelle l'action index de indexcontroller.php qui genere le wrapper html de mon appli Flex. Tout va bien.
La ou ca coince, c'est quand un appel a un service PHP depuis Flex appelle lui meme le serveur AMF via une url de type http://www.domaine.com/broker/amf => retour page flex. Le controlleur BrokerController (qui est cense me proposer de telecharger un fichier 'amf') ne semble pas etre 'capture' par index.php.

mon fichier htaccess :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

mon index.php :

<?php
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));
$rootPath = dirname(dirname(__FILE__));
$appPath = $rootPath . DIRECTORY_SEPARATOR . 'application';
$confPath = $appPath . DIRECTORY_SEPARATOR . 'config';

set_include_path(get_include_path() .
PATH_SEPARATOR . $appPath .
PATH_SEPARATOR . $rootPath . DIRECTORY_SEPARATOR . 'library' .
PATH_SEPARATOR . $appPath  . DIRECTORY_SEPARATOR . 'models' .
PATH_SEPARATOR . $appPath  . DIRECTORY_SEPARATOR . 'services');

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

defined('APP_MODE') or define('APP_MODE', 'prod');
defined('CACHE_LIFETIME') or define('CACHE_LIFETIME', 3600);

Dvs_Cache::setup(CACHE_LIFETIME);
$cacheInstance = Dvs_Cache::getCacheInstance();
Dvs_Config::setBackendCache($cacheInstance->getBackend());

$configMain    = new Dvs_Config_Ini($confPath . DIRECTORY_SEPARATOR . 'config.ini', APP_MODE);

$log = new Zend_Log($writer = new Zend_Log_Writer_Stream($appPath . $configMain->logfile));
$log->setEventItem('user_agent', $_SERVER['HTTP_USER_AGENT']);
$log->setEventItem('client_ip', $_SERVER['REMOTE_ADDR']);
$log->addPriority('USER', 8);

$format = '%client_ip% %user_agent%' . Zend_Log_Formatter_Simple::DEFAULT_FORMAT;

$writer->setFormatter(new Zend_Log_Formatter_Simple($format));

Zend_Registry::set('log', $log);

try {
    $db = Zend_Db::factory($configMain->database);
    $db->query("SET NAMES 'UTF8'");
    Zend_Db_Table_Abstract::setDefaultAdapter($db);
} catch (Zend_Db_Exception $e) {
   
}
Zend_Layout::startMvc(array('layoutPath' => $appPath . '/views/layouts'));
$frontController = Zend_Controller_Front::getInstance();
$frontController->setControllerDirectory($appPath . '/controllers/');
$frontController->throwExceptions(true);
$frontController->setParam('debug', $configMain->debug);
$frontController->setParam('config', $configMain);

$view = new Zend_View();
$view->setEncoding('UTF-8');
$view->strictVars((bool) $configMain->debug);
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);

try {
    $frontController->dispatch();
} catch (Zend_Exception $e) {
    $log->crit($e);
}

Encore 1 fois, localement, tout fonctionne correctement... Je vois vraiment pas...

Merci de votre aide.

Dernière modification par Devsigning (02-05-2009 05:43:59)

Hors ligne

 

#2 02-05-2009 05:57:47

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Re: Mise en production

Apres farfouillage dans mes logs, j'obtiens une erreur :

exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (Broker)' in /home2/devsigni/library/Zend/Controller/Dispatcher/Standard.php:241
Stack trace:
#0 /home2/devsigni/library/Zend/Controller/Front.php(936): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /home2/devsigni/public_html/index.php(65): Zend_Controller_Front->dispatch()
#2 {main}

donc je specifie l'entete http par :

$response = new Zend_Controller_Response_Http();
$response->setRawHeader('Content-type: text/html; charset=utf-8');
$frontController->setResponse($response);

Mais pas de changement (retour a la page flex, pas de capture du serveur AMF)...
Mystere...

Dernière modification par Devsigning (02-05-2009 06:23:57)

Hors ligne

 

#3 02-05-2009 06:11:11

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Re: Mise en production

Deux dernieres infos :

1> Dans le controlleur Broker, je desactive le rendu de la vue :

public function init()
    {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
    }

2> Quand je saisis directement l'url domaine.com/Broker/amf ca me renvoit a la page Flex mais le navigateur n'a plus de page de titre. Donc le controlleur semble bien appele... puisque la vue qui genere l'HTML du wrapper du SWF Flex a elle bel et bien un titre !!!

Je raaaaaaame !! ^^

Dernière modification par Devsigning (02-05-2009 06:12:37)

Hors ligne

 

#4 02-05-2009 08:42:49

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Mise en production

Si tu développes sur windows ou mac et que tu déploies sur un linux, je parie sur un problème de majuscules.

Linux est case sensitive et pas les 2 autres. Est-ce que tu as bien BrokerController.php avec un grand B et un grand C ?

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 02-05-2009 13:28:06

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Re: Mise en production

J'avais deja lu un post sur cette exigence de Linux. En effet, je developpe sous Windows et sur Bluehost, c'est un serveur Linux. Apres verification, tout est en BrokerController, grand B et grand C... L'action est amfAction.
Donc en toute logique, je pointe sur http://www.domaine.com/Broker/amf/ pour appeler mon serveur AMF.

Infos : quand je supprime le dernier '/' de la ligne :

$frontController->setControllerDirectory($appPath . '/controllers/');

Il ne se passe toujours rien mais du coup mon log est vide... roll
Quand je pointe explicitement sur http://www.domaine.com/index/index pour appeler le controleur qui est appele par defaut en pointant sur http://www.domaine.com/, tout se passe bien... (retour sur accueil flex avec titre dans la page du navigateur => controleur index appele)
Quand je pointe sur http://www.domaine.com/index/truc (controlleur qui n'existe pas), meme retour que pour BrokerController et log vide...

Dernière modification par Devsigning (02-05-2009 14:16:12)

Hors ligne

 

#6 02-05-2009 20:54:51

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Mise en production

Je parle bien du nom du fichier, pas du nom de la classe. A priori, c'est vraiment le fichier qu'il ne trouve pas (si le contenu du fichier était erroné, tu aurais une autre erreur a priori...).

Si ça n'est pas un pb de majuscule, tu n'as pas une faute de frappe quelque part... Bref, je suis insistant, mais je ne vois qu'une erreur à la noix de ce genre...

A+, Philippe
PS : http://www.domaine.com/broker/amf/ : c'est bien avec un petit "b" dans l'URL et ça appelle le fichier et la classe associée avec un grand "B".


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 02-05-2009 23:28:38

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Re: Mise en production

Je n'ai que recopie des urls, je confirme que les majuscules sont bien tapees dans le code wink J'ai d'ailleurs tout reverifie en modifiant le fameux controleur en 'MessageBrokerController'.
Precision : tout fonctionne correctement localement. Mis a part adapter http://alpha/ (mon serveur local) par mon nom de domaine, rien est change.
Je me demande si ca ne vient pas des urls relatives (pointer vers le dossier /application/controllers/). Mais dans ce cas, l'acces a index/index ne fonctionnerait pas.
Je ne peux d'ailleurs pas definir 'AllowOverride' a All sur Bluehost pour gerer les handles sur les htaccess... Je vois vraiment pas. Je joins une capture de l'arborescence de mon site :

http://www.devsigning.com/tempDir/alpha.jpg

Voir le debut du post pour les autres infos. Le 1er a trouver aura un 40 ans d'age ! tongue

Dernière modification par Devsigning (03-05-2009 06:35:26)

Hors ligne

 

#8 03-05-2009 20:13:19

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Mise en production

Si tu as renommé ton contrôleur en MessageBrokerController.php, a priori pour l'appeler il faut appeler l'URL
http://www.domaine.com/message-broker/amf/

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#9 03-05-2009 22:07:12

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Re: Mise en production

!!!!!!! 1er test, ca fonctionne !!!! Je te l'envoie ou le 40 ans d'age ?!
C'est a cause de la majuscule du B qu'il faut 'splitter' le controleur ?
Merci encore Philippe, je debrief d'ici demain smile

Hors ligne

 

#10 04-05-2009 08:42:57

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Mise en production

arg, je suis déjà Normand par ma mère et Bouguignon par ma cave... je sens que tu ne veux pas que du bien à mon foie smile

Oui, c'est à cause du grand B. C'est pas mal planqué dans la doc ce comportement (c'est peut-être ailleurs, mais je n'ai pas trouvé) :
http://framework.zend.com/manual/fr/zen … asics.html

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#11 04-05-2009 09:24:11

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Mise en production

Hello,

C'est dans Zend_Controller migration. 1.0 vers 1.5 de mémoire.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#12 06-05-2009 09:20:33

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Mise en production

@Devsigning :
Si j'ai bien compris, tu as un hébergement bluehost. Est-ce que tu peux faire un petit point sur les configurations dont tu as eu besoin pour installer ton site ZF sur bluehost ? (htaccess, confs particulières dont tu aurais eu besoin, est-ce que ça marche bien ?...)

Je te remercie d'avance,
Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#13 06-05-2009 21:45:28

Devsigning
Membre
Lieu: Rennes
Date d'inscription: 02-05-2009
Messages: 20
Site web

Re: Mise en production

Pas de souci, je prepare tout ca. (je dispense une formation Flex en ce moment qui me prend bcp de temps). Je creerai un nouveau post ou je mettrai mon htaccess, mon controlleur dedie a l'AMF, mon arborescence et mon index.php.
Mon site sera dedie en grande partie a Flex & Zend et/ou comment optimiser les echanges via le remoting, les classes mappees PHP/AS3 et les services.
Encore un grand merci pour cette config (en effet) bien planquee !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages