2015-01-08 15 views
9

Zainstalowałem framework Symphony2 i utworzyłem własny pakiet. Używam aktywów dla moich plików js i css.Symfony 2 Assetic css i js 404 w środowisku produkcyjnym

Używam Ubuntu na moim serwerze i mennicy na mojej lokalnej maszynie.

Kiedy uzyskuję dostęp do app_dev.php lokalnie wszystkie zasoby służą dobrze.

Kiedy uzyskuję dostęp do app.php lokalnie wszystkie zasoby służą dobrze.

Jednak na moim serwerze, trasa zostanie wygenerowana ale aktywa (CSS & js) i uzyskać 404.

Kiedy tail prod.log dostaję przechwycony wyjątek poniżej:

PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /admin/css/875a243.css"" 

Przeszukałem internet wysoko i nisko i nie mogę tego zrozumieć.

Mam wyczyszczone pamięci podręczne, aktywa po cenach dumpingowych, instalację zasobów, wszystkie uprawnienia są poprawne.

moja aplikacja routing.yml config:

brs: 
    resource: "@BrsAdminBundle/Resources/config/routing.yml" 
    prefix:/

mój pakiet routing.yml config

admin: 
    path: /admin/ 
    defaults: { _controller: BrsAdminBundle:Admin:index } 

moim app config:

imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: assets.yml } 

framework: 
    #esi:    ~ 
    #translator:  { fallback: "%locale%" } 
    secret:   "%secret%" 
    router: 
     resource: "%kernel.root_dir%/config/routing.yml" 
     strict_requirements: ~ 
    form:   ~ 
    csrf_protection: ~ 
    validation:  { enable_annotations: true } 
    templating: 
     engines: ['twig'] 
     #assets_version: SomeVersionScheme 
    default_locale: "%locale%" 
    trusted_proxies: ~ 
    session:   ~ 
    fragments:  ~ 
    http_method_override: true 

# Twig Configuration 
twig: 
    debug:   "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 

# Assetic Configuration 
assetic: 
    debug:   "%kernel.debug%" 
    use_controller: false 
    bundles:  [ ] 
    #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" 

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: "%database_driver%" 
     host:  "%database_host%" 
     port:  "%database_port%" 
     dbname: "%database_name%" 
     user:  "%database_user%" 
     password: "%database_password%" 
     charset: UTF8 
     # if using pdo_sqlite as your database driver: 
     # 1. add the path in parameters.yml 
     #  e.g. database_path: "%kernel.root_dir%/data/data.db3" 
     # 2. Uncomment database_path in parameters.yml.dist 
     # 3. Uncomment next line: 
     #  path:  "%database_path%" 

    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     auto_mapping: true 

# Swiftmailer Configuration 
swiftmailer: 
    transport: "%mailer_transport%" 
    host:  "%mailer_host%" 
    username: "%mailer_user%" 
    password: "%mailer_password%" 
    spool:  { type: memory } 

mój asset.yml config:

assetic: 
    assets: 
    bootstrap_js: 
     inputs: 
     - '%Kernel.root_dir%/Resources/public/js/jquery-2.1.3.min.js' 
     - '%Kernel.root_dir%/Resources/public/js/bootstrap.min.js' 
    bootstrap_css: 
     inputs: 
     - '%Kernel.root_dir%/Resources/public/css/bootstrap.min.css' 
     - '%Kernel.root_dir%/Resources/public/css/bootstrap-theme.min.css' 
    admin_css: 
     inputs: 
     - '@BrsAdminBundle/Resources/public/css/styles.css' 

mój base.html.twig który wykorzystuje assetic:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
     <title>{% block title %}BankRoll Supply{% endblock %}</title> 
     {% block stylesheets %} 
      {% stylesheets '@bootstrap_css' '@admin_css' %} 
       <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> 
      {% endstylesheets %} 
     {% endblock %} 
     <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" /> 
    </head> 
    <body> 
     {% block body %}{% endblock %} 
     {% block javascripts %} 
      {% javascripts '@bootstrap_js' %} 
       <script type="text/javascript" src="{{ asset_url }}"></script> 
      {% endjavascripts %} 
     {% endblock %} 
    </body> 
</html> 

Każda pomoc będzie mile widziana.

Dziękuję

Ad

+0

Ten sam problem tutaj. –

Odpowiedz

1

Hi Chyba masz problemy z powodu cssrewrite.

Masz dwie opcje;

To jest przykład z pierwszej opcji

można określić katalog docelowy dla swoich aktywów. Poniższy przykład odnosi się do "/ web/bundles/yourbundle/css" Wykonaj assets:install --env=prod i assetic:dump --env=prod i myślę, że jesteś gotowy.

{% stylesheets 
'@admin_css' 
output='bundles/yourbundle/css/admin_style.css' 
%} 
<link href="{{ asset_url }}?{{ AssetVersion }}" rel="stylesheet" type="text/css"> 
{% endstylesheets %} 

Również muszę wspomnieć, że podczas definiowania swoich aktywów w asset.yml, assetic:dump generuje folderu assets w katalogu dóbr publicznych, których nie trzeba w tym przypadku. Aby pozbyć się tego folderu, możesz użyć tej składni w gałązce;

{% stylesheets 
'@YourBundle/Resources/public/css/admin.css' 
output='bundles/yourbundle/css/admin_style.css' 
%} 
<link href="{{ asset_url }}?{{ AssetVersion }}" rel="stylesheet" type="text/css"> 
{% endstylesheets %} 
Powiązane problemy