2015-03-04 7 views
26

Dal mio aggiornamento Symfony 2 a 2.7. Ottengo un sacco di erori deprecati in PHPUnit e console (messaggio è ormai chiaro).Disabilitare l'avviso deprecato in Symfony 2 (.7)

ProjectX\ApiBundle\Tests\Controller\SectionsControllerTest::testPostDebug() 
The twig.form.resources configuration key is deprecated since version 2.6 and will be removed in 3.0. Use the twig.form_themes configuration key instead. 

Qualche idea su come disabilitarli per ora?

+0

Bene, si spera che a partire da symfony 2.7.1 i messaggi di deprecazione vengano disattivati ​​per impostazione predefinita e vengano visualizzati solo nella barra di debug del componente di sviluppo. http://symfony.com/blog/symfony-2-7-1-released – COil

risposta

15

Ho lo stesso problema e l'ho risolto in modo simile al link sottostante. Symfony dichiara di segnalare tutti gli errori e sovrascrive ciò che è stato inserito in php.ini in base alla progettazione (altrimenti non è stato possibile catturare lo & visualizzando le tracce dello stack).

Quindi, avrete bisogno di segnalazione degli errori integrata esclusione di Symfony2 con la creazione di una funzione init() nel vostro AppKernel.php e l'impostazione del error_reporting come vorresti lì, insieme con (probabilmente) un po 'di rilevamento ambiente fare in modo di non visualizzare gli errori nella produzione, per esempio:

// Add this to app/AppKernel.php 
public function init() 
{ 
    if ($this->debug) { 
     ini_set('display_errors', 1); 
     error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED); 
    } else { 
     ini_set('display_errors', 0); 
    } 
} 

Maggiori dettagli qui (utilizzare Google Translate, se non si legge :) russo http://tokarchuk.ru/2012/12/disable-deprecated-warnings-in-symfony-2/

39

AppKernel ereditato kernel :: init function() si è deprezzato quindi cambiarlo non è una soluzione a lungo termine praticabile.

È possibile sovrascrivere facilmente la segnalazione degli errori modificando la chiamata in Debug :: enable(); in entrambe le app/console e web/app_dev.php così.

Change

Debug::enable(); 

a

Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false); 

Questo lascerà tutti gli altri segnalazione di errori nel tatto, mentre la soppressione ammortizzati avvertimenti. E non hai affatto bisogno di confondere il Kernel.

+0

risposta perfetta, grazie –

5

La chiave di configurazione twig.form è stata rimossa nella nuova versione di Twig. Pertanto è necessario sostituire la chiave in config.yml

///DEPRECATED : 

    twig: 
    form: 
     resources: 
      - 'path_to_template_file' 

// NEW WAY : 
    twig: 
    form_themes: 
     - 'path_to_template_file' 
6

noti che la disattivazione warning di deprecazione via error_reporting() o Debug :: abilitazione() non impedirà loro di essere iscritto per poter dev.log. Per disabilitare la registrazione, è necessario modificare il livello di log nel gestore monolog in "warning" (gli avvisi di deprecazione vengono registrati come "info" nel canale "php").

In alternativa, per impedire che altri registri vengano interessati, è possibile creare un gestore monologo separato con un livello diverso per il canale "php", ad es.

monolog: 
    handlers: 
     main: 
      type: stream 
      path: %kernel.logs_dir%/%kernel.environment%.log 
      level: debug 
      formatter: monolog.formatter.session_request 
      channels: '!php' 
     php: 
      type: stream 
      path: %kernel.logs_dir%/%kernel.environment%.log 
      level: warning 
      formatter: monolog.formatter.session_request 
      channels: 'php' 
23

Nel mio caso, non ho potuto nascondere avvertimento deprecato senza utilizzare SYMFONY_DEPRECATIONS_HELPER variabili Environnment.

Cambia la tua phpunit.xml con

<phpunit> 
    <!-- ... --> 

    <php> 
     <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/> 
    </php> 
</phpunit> 

Poi, dovrete semplicemente un messaggio del tipo "avvisi deprecazione rimanenti (x)", che non è considerato come un fallimento del test.

Spero che questo possa essere d'aiuto.

+0

Funziona. Grazie! –

+0

Questo lo risolve per la mia pipeline, ma mentre eseguo localmente 'phpunit', in realtà voglio emettere queste deprecazioni. '$ _ENV ['SYMFONY_DEPRECATIONS_HELPER'] = 'debole';' tuttavia non risolve questo problema. – Rvanlaak