tutorial instalar español descargar php symfony frameworks

instalar - ¿Por qué mi Symfony2 instala 404ing cuando accedo a app.php?



symfony php tutorial (12)

Bueno, encontré una respuesta más simple y más rápida:
primero: $kernel = new AppKernel(''prod'', TRUE);
En el archivo app.php.
Luego, en su routing.yml (la aplicación / configuración / enrutamiento uno, no su paquete) simplemente elimine el código generado por defecto después de la declaración de su enrutamiento.

_demo: resource: "@AcmeDemoBundle/Controller/DemoController.php"
type: annotation
prefix: /demo

Tiene que ser eliminado. ¡Después de hacerlo, ahora está trabajando sin problemas!

En Symfony2, cuando accedo a mi aplicación localmente a través de app_dev.php, todo funciona bien. Sin embargo, cuando accedo a app.php es 404s:

Oops! Ocurrió un error

El servidor devolvió un "404 no encontrado".

Algo está roto. Envíenos un correo electrónico a [correo electrónico] y háganos saber lo que estaba haciendo cuando ocurrió este error. Lo arreglaremos lo más pronto posible. Lo siento por


Cuando sigas la respuesta de Anton y aún obtengas el error, puedes intentarlo de la siguiente manera

En routing.yml , agregue estas líneas (solo)

_welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index } _demo_secured: resource: "@AcmeDemoBundle/Controller/SecuredController.php" type: annotation _demo: resource: "@AcmeDemoBundle/Controller/DemoController.php" type: annotation prefix: /demo

no agregue estas líneas

_assetic: resource: . type: assetic _wdt: resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" prefix: /_wdt _profiler: resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" prefix: /_profiler _configurator: resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" prefix: /_configurator _main: resource: routing.yml

Este es un ejemplo del routing.yml que escribí

# Internal routing configuration to handle ESI #_internal: # resource: "@FrameworkBundle/Resources/config/routing/internal.xml" # prefix: /_internal _welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index } _demo_secured: resource: "@AcmeDemoBundle/Controller/SecuredController.php" type: annotation _demo: resource: "@AcmeDemoBundle/Controller/DemoController.php" type: annotation prefix: /demo


De acuerdo, he tenido el mismo problema y borrar el caché no lo resolvió. Después de una hora de publicaciones en las que todos dicen "caché claro", he decidido realmente entender qué está pasando. Así que trataré de explicarle a otras personas como yo (que recién comenzaron). Espero no estar equivocado y si es así, corrígeme por favor.

Acme/DemoBundle que estás siguiendo el tutorial del libro, donde tienes Acme/DemoBundle . Y acceder desde el entorno de producción le da 404 . En primer lugar, debe tener una idea clara de qué significa paquete en Symfony. Es algo así como un complemento. Es como un rompecabezas. Symfony es como un gran rompecabezas y tu aplicación es una pieza del rompecabezas.

Primero, veamos el archivo ./app en ./app . Lo que vemos allí es registrar paquetes. Como poner las piezas del rompecabezas. Y primero decimos "está bien, quiero las piezas principales del rompecabezas, los paquetes de Symfony" y luego decimos "y si estoy en modo de depuración, también quiero algunas otras piezas". Y ahí está tu pieza, tu paquete. Es por eso que no puede acceder desde el entorno de producción. Solo registra el paquete desde el entorno del desarrollador. Registre su paquete ( Acme/DemoBundle/AcmeDemoBundle ) en la parte superior, y puede acceder desde el entorno de producción.

En segundo lugar, ingrese a ./app/config/routing_dev.yml . Esta es la ruta para el entorno de desarrollo. Estamos diciendo "está bien, tengo algo de información de enrutamiento en @AcmeDemoBundle/Resources/config/routing.yml y en el entorno de desarrollo, nuestro paquete se encuentra. Pero busque en ./app/config/routing.yml . No hacemos menciona algo acerca de nuestro enrutamiento personalizado. Es como si el Framework no supiera sobre la existencia de nuestro archivo de enrutamiento. Y esto es en el entorno de producción. Así que agregar la última parte de routing_dev.yml a routing.yml (in ./app/config/ ) debería solucionar el problema.

Después de eso, borre la caché y verifique si /app.php/random/[number] funciona. Debería ser.

Espero que esto ayude a alguien como yo, entendiendo algunos de los conceptos básicos.


Debo estar de acuerdo con Andrew.

Convertir el segundo AppKernel en VERDADERO solo permite un mensaje de depuración más claro (y es posible que notes que la aplicación no es más rápida de lo esperado).

En mi caso, me dijo que no tenía una ruta de bienvenida disponible para la producción (es decir, routing.yml).

Tuve que agregar las siguientes líneas mencionadas por Misbah y seguir otros procedimientos comunes para que mi aplicación funcione a toda velocidad.

_welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index }


El problema me preocupa mucho y aquí está mi solución: primero cambie la línea de archivo 21 así:

$kernel = new AppKernel(''prod'', true);

entonces puede tener problemas de informes mientras visualiza /app.php

de hecho, hice estos cambios para evitar el ''error 404'':

en appKernel.php: comentario

$bundles[] = new Acme/DemoBundle/AcmeDemoBundle();

añadir

new Acme/DemoBundle/AcmeDemoBundle()

en la parte inferior de la función registerBundles ();

añadir

# AcmeDemoBundle routes (to be removed) _acme_demo: resource: "@AcmeDemoBundle/Resources/config/routing.yml"

a routing.yml

Lamento no saber cómo usar el widget de fragmentos de código, pero espero poder ayudarte.


Este es el caché de Symfony normal haciendo su trabajo. Cualquier cambio que realice será en vivo para ver / probar en app_dev.php (desarrollar entorno), pero no en app.php (entorno de producción) ya que almacena en caché todo.

Sigo una regla simple que funciona. Cada vez que actualizo algo en la app/config/routing.yml (o cualquier cambio real) y quiero verlo en producción, debe BORRAR LA CACHÉ ejecutando el siguiente comando de la consola:

Symfony 2. *: php app/console cache:clear --env=prod

Symfony 3. *: php bin/console cache:clear --env=prod

Ahora intenta volver a cargar la página en tu navegador, y la verás funcionar.


Parece que no tienes configurado el enrutamiento correctamente.

Verifique su archivo routing.yml si contiene una ruta predeterminada para / . Si no, agregue uno al controlador / acción que desea ejecutar.


Tuve el mismo problema y acabo de borrar el caché. php app/console cache:clear --env=prod Esto ha resuelto mi problema.

No coloque el atributo en verdadero: $ kernel = new AppKernel (''prod'', TRUE); activará el modo de depuración y no se recomienda para el prod.


cambie su entorno para desarrollarlo, para usar las rutas configuradas en routes_dev.yml

$ kernel = new AppKernel (''dev'', verdadero);


Tenía el mismo problema .

de hecho, puede haber varios problemas. pero debe borrar la memoria caché con el comando de la consola, ya que Symfony almacena en caché las rutas, las plantillas y la configuración.


Descargo de responsabilidad: soy totalmente nuevo en Symfony.

Viniendo de otros marcos, parecía extraño que no pudieras cambiar el entorno / depuración en función de las variables de entorno actuales (es decir, ruta / dominio).

Así que app.php nombre de app.php a app_prod.php y actualicé app.php a lo siguiente:

<?php if ($_SERVER[''HTTP_HOST''] == ''localhost'') { require_once ''app_dev.php''; } else { require_once ''app_prod.php''; }

Entonces, si estoy ejecutando el código en mi local, usaré dev, si lo ejecuto en cualquier otro lugar se ejecutará como producción. Obviamente, puede agregar las comprobaciones que desee, compruebe las rutas de archivos de etapas / producción / dev en lugar de nombres de host.


Una nueva instalación de Symfony 2 no contiene ningún enrutamiento para el entorno de producción. Si app/config/routing_dev.yml un vistazo en app/config/routing_dev.yml , verás que todas las rutas que ves en la aplicación de demostración están definidas solo para el desarrollo. Si desea probar la demostración en app.php , primero debe copiar la ruta desde routing_dev.yml a routing.yml , y también habilitar AcmeDemoBundle debajo de usted AppKernel.php :

$bundles = array( new Symfony/Bundle/FrameworkBundle/FrameworkBundle(), new Symfony/Bundle/SecurityBundle/SecurityBundle(), new Symfony/Bundle/TwigBundle/TwigBundle(), new Symfony/Bundle/MonologBundle/MonologBundle(), new Symfony/Bundle/SwiftmailerBundle/SwiftmailerBundle(), new Symfony/Bundle/DoctrineBundle/DoctrineBundle(), new Symfony/Bundle/AsseticBundle/AsseticBundle(), new Sensio/Bundle/FrameworkExtraBundle/SensioFrameworkExtraBundle(), new JMS/SecurityExtraBundle/JMSSecurityExtraBundle(), + new Acme/DemoBundle/AcmeDemoBundle() } if (in_array($this->getEnvironment(), array(''dev'', ''test''))) { - $bundles[] = new Acme/DemoBundle/AcmeDemoBundle(); $bundles[] = new Symfony/Bundle/WebProfilerBundle/WebProfilerBundle(); $bundles[] = new Sensio/Bundle/DistributionBundle/SensioDistributionBundle(); $bundles[] = new Sensio/Bundle/GeneratorBundle/SensioGeneratorBundle(); }

(+ es la línea que debe agregar, - es la línea que debe eliminar)