Hola a todos, mi problema es el siguiente,
Mi aplicación funciona bien en mi máquina pero al desplegarla en producción no me carga los css ni los js. Les dejo algo de la configuración de los asssets para ver si tienen alguna idea de lo que pueda estar pasando.
{% stylesheets 'assets/vendor/bootstrap/dist/css/bootstrap.min.css' 'assets/vendor/metisMenu/dist/metisMenu.min.css' 'assets/vendor/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css' 'assets/vendor/font-awesome/css/font-awesome.min.css' 'assets/vendor/datetimepicker/jquery.datetimepicker.css' 'assets/vendor/animate.css/animate.min.css' 'bundles/app/css/*' filter='cssrewrite' output='css/compiled/app.css' %} <link rel="stylesheet" href="{{ asset_url }}"/> {% endstylesheets %}
Al ejecutar el comando assetic:dump
en producción me sale este error:
$ /usr/bin/php5 app/console assetic:dump Dumping all dev assets. Debug mode is on. 09:04:13 [file+] /home/sip/releases/20151004140322/app/../web/css/compiled/app.css [RuntimeException] The source file "/home/sip/releases/20151004140322/app/../web/bundles/app/css/sb-admin-2.css" do es not exist. assetic:dump [--forks FORKS] [--watch] [--force] [--period PERIOD] [--] [<write_to>]
Les agradezco si tienen alguna respuesta,
Respuestas
Al parecer, tenías un archivo CSS en src/AppBundle/Resources/public/css/sb-admin-2.css
pero por alguna razón ya no se encuentra ese archivo y por eso Assetic muestra ese error.
De todas formas, el comando assetic:dump
parece que no lo estás ejecutando en el entorno de producción. A menos que hayas definido alguna variable de entorno en tu servidor, debes indicar --env=prod
a todos los comandos que ejecutes en el servidor de producción.
Te aconsejo que hagas lo siguiente:
# Borra la caché completa de esta manera $ rm -fr app/cache/* # Vuelve a generar los archivos de Assetic $ php app/console assetic:dump --env=prod --no-debug
@javiereguiluz
Gracias Javier, estoy probando lo que me dices , sin embrago quisiera entender por qué al ejecutar el comando app/console assets:install web --symlink
no hace referencia a mi AppBundle?
Trying to install assets as symbolic links. Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework The assets were installed using symbolic links. Installing assets for Nelmio\ApiDocBundle into web/bundles/nelmioapidoc The assets were installed using symbolic links. Installing assets for FOS\JsRoutingBundle into web/bundles/fosjsrouting The assets were installed using symbolic links. Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution The assets were installed using symbolic links.
@miguelplazasr
Sigue sin funcionar, revise la carpeta web/bundles y solamente tiene
pulsarit@server28 [~/sip/current/web/bundles]# ls ./ ../ fosjsrouting@ framework@ nelmioapidoc@
Y el error es el mismo
[RuntimeException] The source file "/home/pulsarit/sip/releases/20151004161926/app/../web/bundles/app/css/sb-admin-2.css" do es not exist.
Alguna otra sugerencia?
[UPDATE]
Uno de los problemas que tengo es que en la carpeta AppBundle/Resources/Public/js/
tengo los archivos de AngularJS y obviamente la aplicación no funciona. Gracias
@miguelplazasr
Lo que no entiendo es de dónde sale ese archivo sb-admin-2.css
. Supuestamente no existe dentro del proyecto, pero Assetic se empeña en querer buscarlo. ¿Has configurado los archivos de Assetic en el archivo app/config/config.yml
o solo los tienes configurado en la plantilla layout? ¿Puedes probar a eliminar 'bundles/app/css/*'
de la plantilla a ver si así funciona?
@javiereguiluz
El archivo sb-admin-2.css
es de la plantilla que uso por eso Assetic lo busca. Creo que el problema es de configuración por que fui eliminando uno a uno los archivos que cargo en la plantilla que están ubicados en AppBundle/Resources/public
y cada uno de ellos me marcaba el mismo error con el nombre de cada archivo. Al final elimine todos los archivos de mi Bundle y ya no marca error, pero esto no es solución puesto que necesito cargarlos.
No se que mas habría que configurar en la aplicación para que esto funcione, dejo el fragmento del archivo config.yml
a ver si me falta algo.
# Assetic Configuration assetic: debug: "%kernel.debug%" use_controller: false bundles: [ 'AppBundle', 'FOSUserBundle' ] #java: /usr/bin/java filters: cssrewrite: ~ #closure: # jar: "%kernel.root_dir%/Resources/java/compiler.jar" #yui_css: # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
Un punto importante es que este error solo se presenta en producción, en dev no ocurre esto. Agradezco la ayuda.
@miguelplazasr
Ahora que vuelves a comentar lo de que solo falla en producción, una pregunta importante: ¿has ejecutado el comando php app/console assets:install --env=prod
antes de ejecutar el comando de Assetic?
@javiereguiluz
Si, lo ejecuto pero al hacerlo no hace nada con los archivos de mi Bundle.
pulsarit@server28 [~/sip/current]# /usr/bin/php5 app/console assets:install --env=prod Installing assets as hard copies. Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework Installing assets for Nelmio\ApiDocBundle into web/bundles/nelmioapidoc Installing assets for FOS\JsRoutingBundle into web/bundles/fosjsrouting
Instala lo de otros paquetes pero el de AppBundle no.
@miguelplazasr
Si te fijas en el código fuente del comando assets:install
, verás lo siguiente:
foreach ($this->getContainer()->get('kernel')->getBundles() as $bundle) { if (is_dir($originDir = $bundle->getPath().'/Resources/public')) { // ... } }
Como ves, la clave es que AppBundle
esté activado en la aplicación y que los archivos CSS y JS se encuentren en el directorio src/AppBundle/Resources/public/
@javiereguiluz
Hola Javier, ya logre solucionarlo. El problema que tenia era realmente algo que pase por alto desde el principio y me da vergüenza admitirlo. jejeje. El nombre del directorio public
lo tenia nombrado con la P
mayúscula, en mi maquina no hay problema, pero en el servidor de producción si hace la diferencia, simplemente me metí al servidor y cambie manualmente el nombre del directorio.
Me surge una duda y es que en mi proyecto local yo realice este cambio pero al subirlo al git no me cambio el nombre del directorio?
Te agradezco mucho la colaboración y disculpa por el tiempo que invertiste en ayudarme.
@miguelplazasr
Respondiendo mi ultima pregunta, lo que hice fue lo siguiente,
Actualicé la configuración de git
$ git config core.ignorecase false
Renombré el directorio Public/
$ git mv -f -k src/AppBundle/Resources/Public src/AppBundle/Resources/public
@miguelplazasr