zf2 zend tutorial invokables framework español php zend-framework zend-framework2 zend-db zend-framework-modules

php - invokables - zend framework tutorial



Página no encontrada en URL de solicitud en aplicación de marco zend 2 (4)

Soy novato en Zend Framework y estoy tratando de configurar el zend. Se instaló con éxito la aplicación zendskeleton en la ventana 7 y XAMPP

Después de la instalación, estoy creando un nuevo módulo de Álbum según la definición en la guía del usuario. Me hicieron todos los códigos y páginas de acuerdo a la guía, pero después de eso me permitieron abrir el módulo del álbum . recibí el error 404 no encontrado.

aquí código

  1. application.config

    return array( ''modules'' => array( ''Application'',''Album'', ), ''module_paths'' => array( ''./module'', ''./vendor'', ), ''config_glob_paths'' => array( ''config/autoload/{,*.}{global,local}.php'', ), ), );

  2. module.config

    return array( ''controllers'' => array( ''invokables'' => array( ''Album/Controller/Album'' => ''Album/Controller/AlbumController'', ), ), ''router'' => array( ''routes'' => array( ''album'' => array( ''type'' => ''segment'', ''options'' => array( ''route'' => ''/album[/][:action][/:id]'', ''constraints'' => array( ''action'' => ''[a-zA-Z][a-zA-Z0-9_-]*'', ''id'' => ''[0-9]+'', ), ''defaults'' => array( ''controller'' => ''Album/Controller/Album'', ''action'' => ''index'', ), ), ), ), ), ''view_manager'' => array( ''template_path_stack'' => array( ''album'' => __DIR__ . ''/../view'', ), ), );

  3. Module.php

    namespace Album; // Add these import statements: use Album/Model/Album; use Album/Model/AlbumTable; use Zend/Db/ResultSet/ResultSet; use Zend/Db/TableGateway/TableGateway; class Module { // getAutoloaderConfig() and getConfig() methods here // Add this method: public function getServiceConfig() { return array( ''factories'' => array( ''Album/Model/AlbumTable'' => function($sm) { $tableGateway = $sm->get(''AlbumTableGateway''); $table = new AlbumTable($tableGateway); return $table; }, ''AlbumTableGateway'' => function ($sm) { $dbAdapter = $sm->get(''Zend/Db/Adapter/Adapter''); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Album()); return new TableGateway(''album'', $dbAdapter, null, $resultSetPrototype); }, ), ); } }

  4. httpd-vhosts.conf

    <VirtualHost *:81> ServerName zf2-tutorial.localhost DocumentRoot "C:/xampp/htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public" SetEnv APPLICATION_ENV "development" <Directory C:/xampp/htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>

  5. entrada de host en system32

    127.0.0.1:8081 zf2-tutorial.localhost

¿Cómo puedo manejarlo? Gracias


Las configuraciones incorrectas básicas en su configuración causan este error.

  1. No uso Windows por mucho tiempo, pero estás usando las barras diagonales tanto hacia adelante como hacia atrás en tus rutas. En primer lugar, debe encontrar el separador de directorios correcto para Windows y atenerse a él. Esto parece problemático: C:/xampp/htdocs/foo/bar/public
  2. Está definiendo un host virtual que escucha cualquier dirección IP en el puerto 81 (*: 81), una entrada hosts System32 que apunta al puerto 8081 como alias zf2-tutorial.localhost e intenta llamar a zf2-tutorial.localhost/album url usando el puerto 80 . Obteniendo este tipo de error bastante normal.

Después de leer por completo los documentos oficiales de Inicio y Uso de Apache Web Server , podrá encontrar fácilmente la solución.


Necesitas esta entrada de hostfile. Agregar puertos no es posible en este archivo.

127.0.0.1 zf2-tutorial.localhost

El sitio web ahora está disponible en zf2-tutorial.localhost: 81 (y no 8081, establece 81 como el número de puerto en la primera línea de httpd-vhosts.conf)


Parece que te falta una entrada de vhost en tu servidor web. Esta podría ser la razón por la cual su solicitud no resuelve su solicitud correcta. Verifique de nuevo "Getting Startet: A skeleton application" para proporcionar una configuración adecuada.


cuando apunta con su raíz de documento de apache a C:/xampp/htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public

necesita utilizar en su navegador esta url http://zf2-tutorial.localhost:8081/album y no como usted escribió http://zf2-tutorial.localhost/ZendSkeletonApplication/ZendSkeletonApplication-master/public/album

esta url señala internamente a un módulo / ubicación diferente.

//editar

si esto no funciona compruebe su carpeta zf2 /public si hay un archivo .htaccess presente; de ​​lo contrario, utilice el archivo de la aplicación zend skeleton aquí https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/.htaccess

compruebe también su entrada apache vhost si el port es igual a su puerto de archivos windows host Windows.

¡Asegúrate de que apache ModRewrite esté cargado!