2012-08-08 20 views
20

देता है मैंने हाल ही में अपनी मशीन पर सफलतापूर्वक सिम्फनी 2 स्थापित किया है।Symfony2 dev पर्यावरण काम करता है, प्रोड पर्यावरण 404 त्रुटि

मैं उपयोग कर सकते हैं http:/localhost/app_dev.php (देव पर्यावरण)

हालांकि, जब मैं prod वातावरण तक पहुँचने का प्रयास:

http:/localhost/app.php

मैं ब्राउज़र में निम्न त्रुटि संदेश मिलता है:

Oops! An Error Occurred

The server returned a "404 Not Found". Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.

मैंने स्पष्ट जांच की है: फ़ाइल app.php उसी फ़ोल्डर में मौजूद है जैसे app_dev.php - इसलिए मुझे नहीं पता चींटियों के कारण यह।

क्या किसी को इसे ठीक करने का समाधान है? के रूप में सिफारिश sudo php app/console cache:clear env=prod no-debug:

[[संपादित करें]]

मैं टाइप करके कैश साफ़ कर दिया है। अब मुझे एक खाली स्क्रीन मिलती है। चिंताजनक बात यह है कि ऐप/लॉग/prod.log में कोई त्रुटि संदेश लॉग इन नहीं है, इसलिए मुझे गलत क्या है (प्रोड पर्यावरण अभी भी ठीक काम करता है) के बारे में बेहद कम विचार नहीं मिला है।

मेरे एप्लिकेशन/config/routing.yml फ़ाइल की सामग्री:

### fos routing, remove later 
fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 

fos_user_profile: 
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml" 
    prefix: /profile 

fos_user_register: 
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml" 
    prefix: /register 

fos_user_resetting: 
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml" 
    prefix: /resetting 

fos_user_change_password: 
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml" 
    prefix: /profile 

### 


# Internal routing configuration to handle ESI 
#_internal: 
# resource: "@FrameworkBundle/Resources/config/routing/internal.xml" 
# prefix: /_internal 

यहाँ मेरी एप्लिकेशन/config/routing_dev.yml फ़ाइल

_welcome: 
    pattern:/
    defaults: { _controller: AcmeDemoBundle:Welcome:index } 

_demo_secured: 
    resource: "@AcmeDemoBundle/Controller/SecuredController.php" 
    type:  annotation 

_demo: 
    resource: "@AcmeDemoBundle/Controller/DemoController.php" 
    type:  annotation 
    prefix: /demo 

_assetic: 
    resource: . 
    type:  assetic 

_wdt: 
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 
    prefix: /_wdt 

_profiler: 
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 
    prefix: /_profiler 

_configurator: 
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" 
    prefix: /_configurator 

_main: 
    resource: routing.yml 

मैं सिर्फ देखा है कि मैं नहीं DO है एक routing_prod.yml **

(अलार्म घंटी बज रहा है) - क्या सिम्फनी 2 उत्पादन रूटिंग कॉन्फ़िगरेशन फ़ाइल के साथ शिप नहीं करता है?

मेरे अपाचे विन्यास फाइल सामग्री नीचे दिखाया गया है:

NameVirtualHost *:80 

<VirtualHost *:80> 
    DocumentRoot /path/to/symfony/web 
    ServerName localhost 

    # Custom log file 
    Loglevel warn 
    ErrorLog /path/localhost.error.log 
    CustomLog /path/localhost.access.log combined 

    <Directory /path/to/symfony/web> 
     AllowOverride None 
     RewriteEngine On 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteRule ^(.*)$ app.php [QSA,L] 
    </Directory> 
</VirtualHost> 

[[आगे विवरण]]

एप्लिकेशन/लॉग/prod.log

[2012-08-10 18:10:38] security.INFO: Populated SecurityContext with an anonymous Token [] [] [2012-08-10 18:10:38] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /" (uncaught exception) at /path/to/symfony/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/RouterListener.php line 83 [] []

+0

क्या आप अपना 'ऐप/config/routing.yml' पेस्ट कर सकते हैं? –

+0

और 'routing_dev.yml' और' routing_prod.yml' भी। मुझे यह भी लगता है कि आपको अपने वेब-सर्वर के 'access.log' और 'error.log' की जांच करनी चाहिए।और, कृपया, अपने वेब-सर्वर वर्चुअल होस्ट कॉन्फ़िगरेशन को संलग्न करें। –

+0

यदि कोई 'routing_prod.yml' नहीं है तो ठीक है। इसका मतलब है कि यह 'routing.yml' –

उत्तर

40

की सामग्री आप शामिल हैं उत्पादन पर्यावरण चालू कर दिया और कैश को मंजूरी दे दी? सांत्वना भागो और ऐसा करते हैं:

app/console --env=prod cache:clear 
+0

यदि आप प्रोजेक्ट जेनरेट करने के लिए 'सिम्फनी' का उपयोग करते हैं तो आप 'ऐप/कंसोल' – Luke

+0

के बजाय 'बिन/कंसोल' का प्रयास कर सकते हैं, इसे सीधे कैश निर्देशिका को हाथ से हटाने की अनुशंसा की जाती है: (जब सिम्फनी प्रोजेक्ट निर्देशिका में) $ rm - आरएफ ऐप/कैश – Benjamin

5

हाल ही में Symfony 2.2 स्थापित करने के बाद मैं इस मुद्दे में भी भाग गया लेकिन यह वास्तव में सामान्य व्यवहार है। बॉक्स सिम्फनी 2.x (इस लेखन के रूप में) का अर्थ उत्पादन वातावरण के लिए किसी भी मार्ग/सामग्री के साथ नहीं भेजता है।

अपने मामले यह आप Symfony बंडल, जो अपने उत्पादन मार्ग (routing.yml) में कुछ मार्गों सेटअप किया था, लेकिन मार्गों में से एक नज़र बिल्कुल भी नहीं के मित्र स्थापित लग रहा है में http:/localhost/app.php/ यानी अपने उत्पादन वातावरण की जड़ को लक्षित कर रहे तो 404 शायद उम्मीद है। मैं पूरी तरह से सुनिश्चित नहीं कर सकता हूं, हालांकि यह मार्ग आयात कर रहा है, इसलिए विवरण अस्पष्ट हैं।अपने मार्गों की जांच करने का एक शानदार तरीका Visualizing & Debugging Routes पर पढ़ना है जहां आप app/console router:debug सीएलआई कमांड के बारे में जान सकते हैं।

routing.yml आपके उत्पादन वातावरण में मार्गों के लिए डिफ़ॉल्ट स्थान है (जिसका अर्थ है routing_prod.yml कोई बात नहीं है)। आप routing_dev.yml आयात routing.yml देखेंगे। इसका मतलब है कि जो भी आप उत्पादन में डालते हैं वह है (बॉक्स के बाहर) विकास में एक्सेसिबल। आपके द्वारा देखी जाने वाली डेमो सामग्री देव पर्यावरण के लिए विशिष्ट है इसलिए आप इसे उत्पादन में नहीं देख रहे हैं। अपनी जरूरतों को पूरा करने के लिए चारों ओर कुछ सामान ले जाने के लिए स्वतंत्र महसूस करें, लेकिन आमतौर पर देव को उत्पादन आयात करने के लिए एक अच्छा विचार है, लेकिन इसके विपरीत नहीं।

जब भी आप अपने उत्पादन में हुए बदलावों का परीक्षण करना चाहते हैं तो आप अपने कैश को @tolgap के रूप में साफ़ करना चाहते हैं। उत्पादन वातावरण प्रीकंपिल्ड कैश पर भारी रूप से झुकता है, ताकि कमांड आपके उत्पादन कैश को रीफ्रेश करने के लिए मजबूर कर दे। देव पर्यावरण हमेशा कैश को ताज़ा करता है। सिम्फनी के साथ काम करने के लिए यह समझना महत्वपूर्ण है। हालांकि Symfony.org पर पुस्तक एक महान प्रविष्टि बिंदु है, लेकिन यह कैशिंग और वर्कफ़्लो के उपशीर्षक के बारे में इस बिंदु को बिल्कुल ठीक नहीं करता है। routing.yml और routing_dev.yml और उत्पादन की हार्ड कैशिंग बनाम देव के नरम कैशिंग के बीच संबंधों को महसूस करने से पहले मैं निश्चित रूप से एक मिनट के लिए उलझन में था।

11

मुझे लगता है कि मुझे एक ही समस्या थी। मेरा मानना ​​है कि कैश को गर्म करने से मेरा उदाहरण हल हो गया है। आप के लिए कोई मार्ग/prod पर्यावरण पर:

php app/console cache:warmup --env=prod --no-debug 
+2

+1 इससे मुझे उन परेशान देव कार्यों में से एक, प्रोड डब्लूएसओडी स्थितियों में से एक प्राप्त करने में मदद मिली। –

+0

ने मुझे अपनी सुरक्षा बर्बाद करने से बचाया ... –

2

मुझे आश्चर्य है कि कोई भी तुमसे कहा था हूँ।

लिखने इस ऐप्लिकेशन में/config/routing.yml

_welcome: 
pattern:/
defaults: { _controller: AcmeDemoBundle:Welcome:index } 
2

आप अपने स्थानीय सर्वर के लिए एपीसी स्थापित करने की आवश्यकता है, और सब कुछ आप के लिए prod आधुनिक में काम करेंगे। पैरामीटर.आईएमएल में सही डेटाबेस को हिट करने का प्रयास करें, क्योंकि देव DATABASENAME_dev जोड़ रहा है।

-2

(Agrega esto Dentro डेल Archivo routing_dev.yml) routing_dev.yml

_wellcome: 
    pattern:/
    defaults: { _controller:AppBundle:Default:index } 
2

मैं समाधान @gilden उसकी टिप्पणी में दे दी है की कोशिश की इस जोड़ें; यह काम करता हैं।

मैं rm -rf app/cache/* के बजाय php bin/console cache:clear --env=prod चला गया।

1

आज मुझे एक ही समस्या थी और विभिन्न समाधानों का प्रयास किया। जब तक मुझे याद नहीं आया कि mod_rewrite apache सेवा सक्षम होना महत्वपूर्ण है। इस रन निम्न आदेश (Ubuntu पर)

sudo a2enmod rewrite 

ऐसा करने के लिए और फिर सर्वर

sudo service apache2 restart 

मुझे आशा है कि किसी सहायक हो सकता है पुनरारंभ करें। सम्मान!

1

मेरा सिम्फनी कैश फ़ोल्डर लिखने योग्य नहीं था। यह तब काम करता था जब मैंने कैश पूर्ण निर्देशिका और इसकी फ़ाइलों को लिखने योग्य बना दिया।

sudo chmod -R 777 . 
संबंधित मुद्दे