Foros del Web » Programando para Internet » PHP » Zend »

Zend framework: Error de HTTP 500 (Internal Server Error):

Estas en el tema de Zend framework: Error de HTTP 500 (Internal Server Error): en el foro de Zend en Foros del Web. Hola buenos dias , estoy intentado crear una aplicacion modular con Zend framework desdes 0 , y me sale ese error , el problema es ...
  #1 (permalink)  
Antiguo 12/05/2011, 11:15
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Zend framework: Error de HTTP 500 (Internal Server Error):

Hola buenos dias , estoy intentado crear una aplicacion modular con Zend framework desdes 0 , y me sale ese error , el problema es que no puedo depurar porque he intentado porner die, desde el index.php del public y me sigue saliendo este error.

La estructura de la aplicacion es la siguiente;
Código HTML:
foro:
   application
      -configs
            -config.php
            -development.config.php
            -production.config.php
            -routes.config.php
      
        -controller
        -layouts
        -modules
               -default
                   -controllers
                        -errorController.php
                         -indexController.php
                   -forms
                   -layouts
                   -view
                       -scripts
                          -error.phtml
                          -index..phtml

          -view
                       -scripts
                          -error.phtml
                          -index..phtml
          -Bootstrap

     -public 
           -index.php
           .htaccess

en mi index.php tengo.
Código PHP:
<?php
// Define the application path

define('APPLICATION_PATH'realpath(dirname(__FILE__) . '/../application'));

// Define the application environment
if (isset($_SERVER['environment']) && $_SERVER['environment'] === 'development') {
    
define('APPLICATION_ENV''development');
} else {
    
define('APPLICATION_ENV''production');
}

// Set include path to ZF library
set_include_path(implode(PATH_SEPARATOR, array(
    
dirname(APPLICATION_PATH) . '/library',
    
get_include_path()
)));

// Initiate Zend_Application
require_once 'Zend/Application.php';

$application = new Zend_Application(
    
APPLICATION_ENV,
    
APPLICATION_PATH '/configs/config.php'
);

$application->bootstrap()
            ->
run();
en mi .htacces.



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


en mi config.php tengo:
Código PHP:
<?php

return array_merge_recursive(array(
    
'includePaths' => array(
        
'library' => APPLICATION_PATH '/library'
    
),
    
'bootstrap' => array(
        
'path'  => APPLICATION_PATH '/Bootstrap.php',
        
'class' => 'Bootstrap'
    
),

    
'resources'   => array(
        
'frontController' => array(
            
'moduleDirectory' => APPLICATION_PATH '/modules'
        
),
        
'modules' => array(),
        
'router' => array(
            
'routes' => include dirname(__FILE__) . '/routes.config.php'
        
),

        
'locale' => array(
            
'default' => 'en_US',
            
'force'   => true
        
),

        
'layout' => array(
            
'layout'     => 'layout',
            
'layoutPath' => APPLICATION_PATH '/layouts/scripts'
        
),
        
    )
), include 
dirname(__FILE__) . '/' APPLICATION_ENV '.config.php');
En mi develompent.config.php .

Código PHP:
<?php
return array(
    
'phpSettings'    => array(
        
'display_startup_errors' => 1,
        
'display_errors'         => 1,
        
'error_reporting'        => (E_ALL E_STRICT)
    ),
    
'resources'      => array(
        
'frontController' => array(
            
'baseUrl'         => '',
            
'throwExceptions' => true
        
)
    )
);
En mi production.config.php .

Código PHP:
<?php
return array(
    
'phpSettings'    => array(
      
'display_startup_errors' => 0,
        
'display_errors'         => 0,
        
'error_reporting'        => 0
    
),
    
'resources'      => array(
        
'frontController' => array(
            
'baseUrl'         => '',
            
'throwExceptions' => true
        
)
    )
);

en mi routes.php
Código PHP:
return array(
'home' => array(
        
'type'  => 'Zend_Controller_Router_Route_Static',
        
'route' => 'home/index',
        
'defaults' => array(
            
'module'     => 'default',
            
'controller' => 'home',
            
'action'     => 'index'
        
)
    )
 ); 
y en el Bootstrapt de la apliacacion tengo:

Código PHP:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    protected function 
_initTimezone()
    {

        
date_default_timezone_set('Europe/Madrid');
    }
    protected function 
_initSystemLocale()
    {
        
$this->bootstrap('locale');
        
setlocale(LC_CTYPE$this->getResource('locale')->toString() . '.utf-8');
    }
     
/**
     * Setup a resource loader for the default module
     *
     * @return void
     */
    
protected function _initDefaultResourceLoader()
    {
        
$resourceLoader = new Zend_Application_Module_Autoloader(array(
            
'namespace' => 'Default',
            
'basePath'  => dirname(__FILE__) . '/modules/default',
        ));
    }


    
/**
     * Setup additional view parameters
     *
     * @return Zend_View
     */
    
protected function _initViewEnvironment()
    {
        
$this->bootstrap('view');

        
$view $this->getPluginResource('view')->getView();

        
$view->doctype(Zend_View_Helper_Doctype::XHTML5);
        
$view->setEncoding('utf-8');

        
$view->headMeta('''utf-8''charset');
           
        
$request = new Zend_Controller_Request_Http();
    }

     
/**
     * Setup a resource loader for the default module
     *
     * @return void
     */

    
protected function _initDefaultResourceLoader()
    {
        
$resourceLoader = new Zend_Application_Module_Autoloader(array(
            
'namespace' => 'Default',
            
'basePath'  => dirname(__FILE__) . '/modules/default',
        ));
    }
    protected function 
_initView()
    {
        
// Initialize view
        
$view = new Zend_View();
        
$view->doctype('XHTML1_STRICT');
        
$view->headTitle('My First Zend Framework Application');

        
// Add it to the ViewRenderer
        
$viewRenderer Zend_Controller_Action_HelperBroker::getStaticHelper(
            
'ViewRenderer'
        
);
        
$viewRenderer->setView($view);

        
// Return it, so that it can be stored by the bootstrap
        
return $view;
    }

    
/**
     * Setup router configuration
     *
     * @return Zend_Controller_Router_Rewrite
     */
    
protected function _initRouting()
    {
        
$router $this->getPluginResource('Router')->getRouter();
        
$router->removeDefaultRoutes();

        return 
$router;
    }

     
/**
     * Set HTTP headers
     *
     * @return Zend_Controller_Response_Http
     */
    
protected function _initResponse()
    {
        
$this->bootstrap('frontController');

        
$response = new Zend_Controller_Response_Http();

        
$response->setHeader('language''en')
                 ->
setHeader('content-language''en')
                 ->
setHeader('Content-Type''text/html; charset=utf-8');

        
$this->getPluginResource('frontController')->getFrontController()
                                                   ->
setResponse($response);

        return 
$response;
    }


Ponga donde ponga un die("A") , siempre me sale el mismo error con lo que no veo donde puede surgir el fallo.

Cuando instaler al principio la aplicacion siguiendo el Quickstart Manual no habia problema y salia la pantalla de Zend que siempre suele salir.

Pero al eliminar el appliacation.ini y querer hacerlo con distintos archivos de configuracion con extension php , sale ese error.

La idea principal es que cuando entre en la aplicacion vaya al module default,
al controllador Home , y a la accion Index.

No se si sera problema del routing.php , del htacces.

Alguna ayuda...muchas gracias
  #2 (permalink)  
Antiguo 12/05/2011, 13:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Creo que el problema es que no consigo en el bootstrap traerme los datos del config.php , como son los resources....quien podria ayudarme a decirme como podria hacerlo , un saludo
  #3 (permalink)  
Antiguo 12/05/2011, 13:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Coloca en el htaccess
Código Apache:
Ver original
  1. SetEnv APPLICATION_ENV "development"
A ver si te muestra otro tipo de error.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 12/05/2011, 13:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Gracias, este es el mensaje que me muestra ahora.

Call to a member function getRouter()....ya sabia yo era capaz de cojer los router..como puedo cojerlos desde el archivo de router.php.

Y una ultima duda , que ventaja da los router?

Muchas gracias
  #5 (permalink)  
Antiguo 12/05/2011, 14:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

¿Cómo haz hecho?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 12/05/2011, 14:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Cual es la razón para utilizar arrays en vez de .ini ?, la configuración en arrays se suele utilizar cuando el deploy es con ant.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 12/05/2011, 14:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

lo tengo asi en el bootstrapt
Código PHP:
 protected function _initRouting()
    {

        
$router $front->getRouter();
        
$router $this->getPluginResource('Router')->getRouter();
        
$router->removeDefaultRoutes();

        return 
$router;
    } 
si pongo:
http://localhost/fjcv/public/

sale este error..
Uncaught exception 'Zend_Controller_Router_Exception' with message 'No route matched the request'

si hago asi:
Código PHP:
protected function _initRouting()
    {
        
$router Zend_Controller_Front::getInstance()->getRouter();
   } 
va al modulo default y al controllador index , y si funciona...pero quiero q vaya al
controlador home.. y la accion Index.


Gracias por la ayuda.
  #8 (permalink)  
Antiguo 12/05/2011, 14:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Use .php , porque vi por ahi un codigo que usaba .php y no se como se usan usando .ini, y quise probar asi....como llamaria desde el config.ini al router.ini , un saludo.

A que te refieres cuando dice el deploy es con ant.

Última edición por phpdevelopment; 12/05/2011 a las 14:27 Razón: mas info
  #9 (permalink)  
Antiguo 12/05/2011, 14:46
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Lo normal es utilizar .ini files para la configuración, el fichero por lo general se llama application.ini, de esta forma esta en el Quickstart, con respecto a el error, es normal, estas eliminando el router por defecto, y lo que quieres se puede hacer configurando el frontController, las claves que te interesan son:

Código INI:
Ver original
  1. resources.frontController.defaultModule = "default"
  2. resources.frontController.defaultControllerName = "home"
  3. resources.frontController.defaultAction = "index"

Te sugiero que pases la configuración a .ini, la mayoría de los ejemplos utiliza este formato.

Y con respecto al deploy con ant, te dejo un link.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 12/05/2011, 14:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Creo que se refiere a esto http://ant.apache.org/, si no pues también estoy perdido

Edito: no estuve tan mal...
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 14/05/2011, 10:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Me surge una duda, que finalidad concreta tiene los router , y ventanjas y como se configurarina en un .ini un saludos
  #12 (permalink)  
Antiguo 14/05/2011, 10:17
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Has mirado la documentación ?

http://framework.zend.com/manual/en/...er.router.html
http://framework.zend.com/manual/en/...sources.router
__________________
http://es.phptherightway.com/
thats us riders :)
  #13 (permalink)  
Antiguo 21/05/2011, 06:57
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Bueno sigo con las duda de los router...en mi application.ini los defini asi:

En el module default , tengo controlador home y contact,

quiero que el default sea el home. y la accion index.

Esta correcta asi la declaracion de los router en mi .ini.
Y por cada controlador y accion hay que agregar un router?

Código:
resources.router.routes.home.route = "/home"
resources.router.routes.home.defaults.module = "default"
resources.router.routes.home.defaults.controller = "home"
resources.router.routes.home.defaults.action = "index"


resources.router.routes.contact.route = "/contact"
resources.router.routes.contact.module = "default"
resources.router.routes.contact.controller = "contact"
resources.router.routes.contact.action = "index"
Muchas gracias por todos....si podrias poner un ejemplo de como teneis alguno de vosotros los router configurados, y como accedeis a ellos , seria de gran ayuda...a veces la pratica clarifica mas que al teoria.
  #14 (permalink)  
Antiguo 21/05/2011, 07:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Has configurado el frontController como te comente antes ?,

Cita:
Y por cada controlador y accion hay que agregar un router ?
No, agregas solamente lo que quieras/necesites.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #15 (permalink)  
Antiguo 21/05/2011, 10:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Si tengo el

resources.frontController.defaultModule = "default"
resources.frontController.defaultControllerName = "home"
resources.frontController.defaultAction = "index"

A ver si me entero.

Yo tengo un controllador llamado contac , y un index action

si quiero que la url sea: http://www.test.com/contact/Me
como deberia hacer la configurancion
tengo:
Código PHP:
resources.router.routes.contact.route "/contact"
resources.router.routes.contact.module "default"
resources.router.routes.contact.controller "contact"
resources.router.routes.contact.action "index" 
, y en la vista tengo esto
Código PHP:
<a href="<?=$this->url(array('contact' => 'Me')) ?>">Contac Me</a>
Y la url final es

http://www.test.com/contact/index/contact/Me

cuando me gustaria tener.

http://www.test.com/contact/Me

Perdona por mi ignorancia ,pero aun ando un poco liado con los router...gracias por la ayuda...
  #16 (permalink)  
Antiguo 21/05/2011, 10:31
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

El resource.router debería ser algo así:

Código INI:
Ver original
  1. resources.router.routes.contact.route = "/contact/Me"
  2. resources.router.routes.contact.defaults.module = "default"
  3. resources.router.routes.contact.defaults.controller = "contact"
  4. resources.router.routes.contact.defaults.action = "index"

Y luego para generar el link así:
Código HTML:
Ver original
  1. <a href="<?php echo $this->url(array(), 'contact'); ?>">Contact Me</a>

Y con el frontController como esta, debería cargar por defecto /home, lo esta haciendo ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #17 (permalink)  
Antiguo 21/05/2011, 10:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

El frontController lo tengo como dijistes y si que va a home/index.

Pero en http://www.test.com/contact/Me

quiero que Me. se ha una variable, para que pueda ser distintos los contactos , y eso es lo que no consigo...
  #18 (permalink)  
Antiguo 21/05/2011, 10:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Esa parte no la especificaste amigo, a ver, algo asi:

Código INI:
Ver original
  1. resources.router.routes.contact.route = "/contact/:who"
  2. resources.router.routes.contact.defaults.module = "default"
  3. resources.router.routes.contact.defaults.controller = "contact"
  4. resources.router.routes.contact.defaults.action = "index"

Código HTML:
Ver original
  1. <a href="<?php echo $this->url(array('who' => 'me'), 'contact'); ?>">Contact Me</a>
__________________
http://es.phptherightway.com/
thats us riders :)
  #19 (permalink)  
Antiguo 21/05/2011, 10:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Tu puedes usar el alias que creaste directamente. Algo como
Código PHP:
Ver original
  1. $this->url(array(), 'contact', true);
El tercer parametro es para evitar lo que te ocurre de contact/index/contact/me

Además, en el application.ini, debería ser algo como
Código ini:
Ver original
  1. resources.router.routes.contact.route = /contact/me
  2. resources.router.routes.contact.defaults.module = default
  3. resources.router.routes.contact.defaults.controller = contact
  4. resources.router.routes.contact.defaults.action = me

Edito: Ups, me atrase un monton, eso me pasa por no darle enviar e irme a buscar algo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #20 (permalink)  
Antiguo 21/05/2011, 10:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Perfecto , muchas gracias.....eso es lo que buscaba.
  #21 (permalink)  
Antiguo 25/05/2011, 11:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Buenas de nuevo sigo dandole vueltas eso del router.

El .ini lo tengo asi:

resources.router.routes.contact.route = "/:la/contact/name/:who"
resources.router.routes.contact.defaults.module = "default"
resources.router.routes.contact.defaults.controlle r = "contact"
resources.router.routes.contact.defaults.action = "index"

y tengo este
Código PHP:
Ver original
  1. <a href="<?=$this->url(array('la'=>'en','who' => 'Pepe'), 'contact'); ?>">Contac Me</a></h4></li>

Como puedo recoger en el controlador las variable la, y who

Código PHP:
Ver original
  1. $request = $this->getRequest();
  2.     $who = $request->getParam('who');
  3.     var_dump($who);die;

Un saludo...
  #22 (permalink)  
Antiguo 25/05/2011, 12:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Tal cual lo estas haciendo $request->getParam('la'); o $request->getParam('who'); Saludos.
  #23 (permalink)  
Antiguo 25/05/2011, 12:29
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Zend framework: Error de HTTP 500 (Internal Server Error):

Si es verdad , tienes razon , no se cual seria el problema, pero ya esta solucionado aunq estuve toquetando y salio, perdonar las molestias...un saludo

Etiquetas: 500, framework, frameworks-y-php-orientado-a-objetos, server, https
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:38.