2013-03-14 12 views
8

Sto iniziando a distribuire la mia app Symfony usando Capifony. Quando Capifony esegue assetic: dump ottengo un'eccezione di runtime.Symfony assetic: dump runtime exception

[RuntimeException]
Impossibile scrivere il file {percorso}/releases/20.130.314,071536 millions/app /../ web/js /.

Ho provato a eseguire manualmente il comando e ottenere la stessa eccezione.
Quindi ho provato il comando utilizzando il parametro --verbose e mi sono reso conto che tutti i file con un percorso di origine che contiene un punto in esso sono stati scritti senza il nome del file, solo l'estensione. L'eccezione si verifica quando si colpisce un nome di file senza estensione (Makefile in questo caso) e si tenta di scrivere il file "." (solo un punto).

Su un altro dominio sullo stesso server, ho lo stesso identico codice ma distribuito manualmente. Lì non ho ricevuto questo errore. Quindi non può essere un problema con la versione di PHP. Ho anche controllato le versioni di Assetic e Assetic-Bundle e sono le stesse.

Quale potrebbe essere la causa del funzionamento assetico diverso?

MODIFICA:
Ho dimenticato di dire che funziona anche correttamente sul mio computer di sviluppo.

EDIT 2:
Si inizia in mancanza in archivio

EDIT 3:
Ho appena realizzato che funziona bene per l'ambiente dev ... ma per --env = prodott dà il problema si pone

web/fasci/attività/attività/immagini/icone/aws.png

un file non sto usando in qualsiasi modello

0.123.516,41 mila

Stacktrace dall'errore

Exception trace: 
() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:249 
Symfony\Bundle\AsseticBundle\Command\DumpCommand->doDump() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:187 
Symfony\Bundle\AsseticBundle\Command\DumpCommand->dumpAsset() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:64 
Symfony\Bundle\AsseticBundle\Command\DumpCommand->execute() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:238 
Symfony\Component\Console\Command\Command->run() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:192 
Symfony\Component\Console\Application->doRun() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:78 
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:105 
Symfony\Component\Console\Application->run() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/app/console:33 

config.yml

# Twig Configuration 
twig: 
    debug:   %kernel.debug% 
    strict_variables: %kernel.debug% 
    form: 
     resources: [HomeBundle:Form:fields.html.twig] 
# Assetic Configuration 
assetic: 
    write_to: "%kernel.root_dir%/../web" 
    debug:   %kernel.debug% 
    use_controller: false 
    bundles:  ['YanicSecurityBundle','HomeBundle','UsersBundle','CmsBundle','AssetsBundle','FormBundle','TranslationBundle','EventBundle','ShopBundle','NewsletterBundle','IssueBundle','ProjectBundle'] 
    filters: 
     cssrewrite: ~ 

EDIT 4:
Durante la ricerca di aws.png (il primo risultato essere rotto) ci sono 2 risultati all'interno cache file:

/Applications/MAMP/htdocs/symfony-standard-2.1/app/cache/dev/appDevUrlGenerator.php: 
    112   '_assetic_e4d7f8d' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => 'e4d7f8d', 'pos' => NULL, '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/assets/images/icons/arrow_rotate_clockwise.png', ), ),), 
    113   '_assetic_e4d7f8d_0' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => 'e4d7f8d', 'pos' => '0', '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/assets/images/icons/arrow_rotate_clockwise_arrow_rotate_clockwise_1.png', ), ),), 
    114:   '_assetic_e1ec2e3' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => 'e1ec2e3', 'pos' => NULL, '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/assets/images/icons/aws.png', ), ),), 
    115   '_assetic_e1ec2e3_0' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => 'e1ec2e3', 'pos' => '0', '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/assets/images/icons/aws_aws_1.png', ), ),), 
    116   '_assetic_490c282' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => '490c282', 'pos' => NULL, '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/assets/images/icons/cancel.png', ), ),), 
    ... 
    874   '_assetic_13192a1' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => '13192a1', 'pos' => NULL, '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/images/icons/arrow_rotate_clockwise.png', ), ),), 
    875   '_assetic_13192a1_0' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => '13192a1', 'pos' => '0', '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/images/icons/arrow_rotate_clockwise_arrow_rotate_clockwise_1.png', ), ),), 
    876:   '_assetic_3d6d4c9' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => '3d6d4c9', 'pos' => NULL, '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/images/icons/aws.png', ), ),), 
    877   '_assetic_3d6d4c9_0' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => '3d6d4c9', 'pos' => '0', '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/images/icons/aws_aws_1.png', ), ),), 
    878   '_assetic_5ea17b1' => array ( 0 => array (), 1 => array ( '_controller' => 'assetic.controller:render', 'name' => '5ea17b1', 'pos' => NULL, '_format' => 'png', ), 2 => array (), 3 => array ( 0 =>  array (  0 => 'text',  1 => '/js/images/icons/cancel.png', ), ),), 

/Applications/MAMP/htdocs/symfony-standard-2.1/app/cache/dev/appDevUrlMatcher.php: 
    517 
    518   // _assetic_e1ec2e3 
    519:   if ($pathinfo === '/js/assets/images/icons/aws.png') { 
    520    return array ( '_controller' => 'assetic.controller:render', 'name' => 'e1ec2e3', 'pos' => NULL, '_format' => 'png', '_route' => '_assetic_e1ec2e3',); 
    521   } 
    ... 
4327 
4328   // _assetic_3d6d4c9 
4329:   if ($pathinfo === '/js/images/icons/aws.png') { 
4330    return array ( '_controller' => 'assetic.controller:render', 'name' => '3d6d4c9', 'pos' => NULL, '_format' => 'png', '_route' => '_assetic_3d6d4c9',); 
4331   

EDIT 5:
Come raccomandato da @cheesemacfly ho rimosso il pacchetto hearsay_require_js e il problema è scomparso. Ora che so cosa incolpare per l'errore, dovrei sapere perché succede solo sul server di staging e quando si distribuisce con Capifony.

+0

può essere utile se si potesse fornire le linee in cui Assetic viene utilizzato nel progetto. – cheesemacfly

+0

@cheesemacfly Intendi all'interno dei modelli Twig? – Michi

+0

Se li usi solo nei tuoi modelli di ramoscello allora sì! (almeno su quello in cui si verifica il problema) – cheesemacfly

risposta

0

controllare le autorizzazioni, sembra non avere i permessi di scrittura su

Unable to write file {path}/releases/20130314071536/app/../web/js/. 

un'occhiata qui: http://symfony.com/doc/2.0/book/installation.html Impostazione sezione Autorizzazioni.

Una domanda ...

È possibile caricare la configurazione deploy.rb? hai impostato utente, modalità root ...?

Si può anche essere più verbose decommentando la seguente riga

logger.level = Logger::MAX_LEVEL 

potrete vedere passo dopo passo il dispiegamento

+0

Non è un problema di autorizzazione in quanto ho cercato di eseguire come root e lo stesso problema.Il problema principale è che il comando rimuove i nomi dei file lasciando solo l'estensione – Michi

+0

Esiste quella cartella? –

2

prova a ricreare le directory di cache.

È possibile ottenere tutti i tipi di comportamento strano quando la cache non è sincronizzata.

Per svuotare la cache:

rm -rf app/cache/* 

sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache 
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache 

o

rm -rf app/cache/* 

sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache 
sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache 
+0

Ciao @ daniel-p Capifony utilizza una directory cache appena creata per ogni distribuzione ... quindi non può essere così. – Michi

+0

hai controllato che la directory venga cancellata? –

+0

non è azzerato ... l'intero progetto va in una directory appena creata che è quindi collegata in modo simbolico ... quindi anche la directory cache è nuova – Michi

0

Come gli altri utenti che hanno detto, si tratta di un problema con le autorizzazioni.

rm -rf symfonyProject/app/cache/*

chmod -R 755 symfonyProject/

chmod -R 777 symfonyProject/app/cache/

chmod -R 777 symfonyProject/app/logs/

Speranza che aiuta

+0

Ciao @ mirza-selimovich Non si tratta di autorizzazioni come ho provato ad eseguire come root e lo stesso è successo ... vedi i miei aggiornamenti! – Michi