2015-05-18 5 views
6

मेरा सिम्फनी एप्लिकेशन में कुछ निर्भरताएं हैं जो केवल विकास, परीक्षण और इसी तरह के लिए आवश्यक हैं। ये require-dev अनुभाग में मेरे composer.json में परिभाषित किए गए हैं।सिम्फनी प्रोड पर्यावरण में देव बंडलों क्यों गुम है?

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
      new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
      new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
      // ... 
     ); 

     if (in_array($this->getEnvironment(), array('dev', 'test'))) { 
      $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
      $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 
      $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
      $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(); 
      $bundles[] = new Liip\FunctionalTestBundle\LiipFunctionalTestBundle(); 
     } 

     return $bundles; 
    } 
} 

जब मैं अपने आवेदन अद्यतन करते हैं, मैं php composer.phar install --no-dev --optimize-autoloader चलाएँ:

यहाँ कैसे मैं उन्हें AppKernel.php में जोड़ने के लिए। यह देव पर्यावरण के लिए आवश्यक सभी आवश्यकताओं को स्थापित नहीं करता है और फिर कैश को साफ़ करता है।

हालांकि, कैश साफ़ करके निम्न संदेश के साथ विफल रहता है:

इस सिद्धांत फिक्स्चर बंडल के साथ न केवल एक समस्या है। अगर मैं ऑर्डर बदलता हूं तो लिप फंक्शनल टेस्ट बंडल पहले आता है तो त्रुटि उस बंडल के बारे में होगी।

मुझे यह त्रुटि क्यों दिखाई दे रही है? सिम्फनी इन बंडलों तक पहुंचने का प्रयास क्यों करता है भले ही हम स्पष्ट रूप से देव पर्यावरण में नहीं हैं (--no-dev संगीतकार ध्वज नोटिस करें)? और उत्पादन मशीन पर सभी देव निर्भरताओं को स्थापित किए बिना इसे दूर करने के लिए मैं क्या कर सकता हूं?

उत्तर

8

ऐसा इसलिए है क्योंकि सिम्फनी डिफ़ॉल्ट env dev है, composer --no-dev केवल संगीतकार को देव आवश्यकताओं को स्थापित न करने के लिए कहता है, सिम्फनी पर्यावरण के बारे में नहीं जानता है। SYMFONY_ENV=prod पर्यावरण चर का प्रयोग करें। http://symfony.com/doc/current/cookbook/deployment/tools.html#c-install-update-your-vendors

उदा: $ SYMFONY_ENV=prod php composer.phar install --no-dev --optimize-autoloader

+0

अच्छा! इस छोटे से विकल्प को जानना मेरे उत्पादन की प्रक्रिया को सरल और साफ रखने में मदद कर रहा है। –

1

आप उत्पादन परिवेश में चलाने के लिए cache:clear आदेश बताने के लिए की जरूरत है।

php app/console --env=production cache:clear 

(यदि आवश्यक हो, "उत्पादन" जो कुछ भी आप विशेष गैर देव वातावरण आप साथ काम कर रहे कॉल कर रहे हैं बदल रहा है)

+0

धन्यवाद, यह मुद्दा का मूल है। दुर्भाग्यवश, संगीतकार कॉल में कमांड लाइन पैरामीटर जोड़ने का कोई तरीका नहीं है जिसे कैश में पास किया जाता है: clear कमांड। लगता है कि यह Fracsi के सुझाव के रूप में किया जाना चाहिए। – Chris

संबंधित मुद्दे

 संबंधित मुद्दे