2012-08-22 14 views
6

मुझे सीजीआईएचपी 2.1 एप्लिकेशन को सीजीआई-पीएचपी के साथ पर्यावरण में चलाने और अपाचे एलियास घोषित करने की क्षमता के बिना चलाने के लिए है। मैं mod_rewrite के साथ केकपीएचपी को सबडोमेन के अनुरोधों को रीडायरेक्ट करना चाहता हूं, लेकिन यह काम नहीं करता है।केकेपीएचपी, सीजीआई और mod_rewrite

वर्तमान सेटअप

  • Webroot ~/user/public_html
  • CakePHP ~/user/public_html/cakephp/ में है
  • CakePHP dev.mydomain.tld

में अनुरोध किया जाना चाहिए क्या मैं अब तक इस (सभी रास्ते रिश्तेदार है वेबूट करने के लिए):

  • ~/user/public_html/.htaccess

    RewriteEngine on 
    Options +FollowSymlinks 
    RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC] 
    RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC] 
    RewriteCond %{REQUEST_URI} !/$ 
    RewriteCond %{DOCUMENT_ROOT}/cakephp/app/webroot%{REQUEST_URI}/ -d 
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R,L] 
    RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC] 
    RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC] 
    RewriteRule ^(.*)$ /cakephp/app/webroot/$1 [L] 
    
  • ~/user/public_html/cakephp/app/webroot/.htaccess

    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php [QSA,L] 
    

समस्या

अनुरोध किसी भी तरह सही ढंग से कराई नहीं कर रहे हैं (आवेदन समस्याओं के बिना चलाता है एक मॉड्यूल के रूप में PHP के साथ मेरे विकास पर्यावरण में और /cakephp/app/webroot/ स्तर पर वर्चुअल होस्ट)। जब मैं dev.mydomain.tld पर होम पेज का अनुरोध करता हूं तो मुझे केवल एक त्रुटि मिलती है, केक मुझे बता रहा है कि केकफ़्प कंट्रोलर गुम है।

डिबग जानकारी

  • /cakephp/app/webroot/index.php

    [REDIRECT_REDIRECT_REDIRECT_STATUS] => 200 
        [REDIRECT_REDIRECT_STATUS] => 200 
        [REDIRECT_HANDLER] => php-script 
        [REDIRECT_STATUS] => On 
        [HTTP_HOST] => dev.mydomain.tld 
        [HTTP_CONNECTION] => keep-alive 
        [SERVER_SOFTWARE] => Apache/2.2.21 (Unix) 
        [SERVER_NAME] => dev.mydomain.tld 
        [SERVER_ADDR] => 192.0.43.10 
        [SERVER_PORT] => 80 
        [DOCUMENT_ROOT] => /home/user/public_html 
        [SCRIPT_FILENAME] => /home/user/public_html/cakephp/app/webroot/index.php 
        [REDIRECT_URL] => /cakephp/app/webroot/index.php 
        [GATEWAY_INTERFACE] => CGI/1.1 
        [SERVER_PROTOCOL] => HTTP/1.1 
        [REQUEST_METHOD] => GET 
        [QUERY_STRING] => 
        [REQUEST_URI] =>/
        [SCRIPT_NAME] => /cakephp/app/webroot/index.php 
        [_PHP5_WORK_DIR] => /home/user/public_html/cakephp/app/webroot 
        [PHP_SELF] =>/
        [ORIG_PATH_INFO] => 
        [ORIG_PATH_TRANSLATED] => /home/user/public_html/cakephp/app/webroot/index.php 
        [PATH_INFO] => /cakephp/app/webroot/index.php 
    
  • में $_SERVER पहली पंक्ति के रूप डिबग के दिलचस्प भागों CakeRequest वस्तु डिस्पैचर के लिए पारित की दिलचस्प भागों:

    url => 'cakephp/app/webroot/index.php' 
        base => '/cakephp' 
        webroot => '/app/webroot/' 
        here => '/cakephp/cakephp/app/webroot/index.php' 
    

सवाल

तो, मैं यहाँ नहीं मिलता है क्या, यही वजह है कि CakeRequest वस्तु मेरी फ़ोल्डर संरचना जबकि $_SERVER['REQUEST_URI'] == '/' के लिए संदर्भ है। यह सही करने के लिए मुझे क्या करना होगा? और सबसे पहले, मुझे समस्या की तलाश करनी चाहिए: mod_rewrite निर्देशों में या केकेपीएचपी में ही? मैंने कॉन्फ़िगरेशन ऑब्जेक्ट में App.baseUrl के लिए एली .htaccess फ़ाइलों और विभिन्न सेटिंग्स में रीवाइटबेस सेट करने सहित कुछ चीजों की कोशिश की, लेकिन यहां कुछ भी मदद नहीं कर रहा था।

अगर कोई मुझे इस समस्या को हल करने के बारे में संकेत दे सकता है तो मैं वास्तव में आभारी रहूंगा।

उत्तर

2

अगर कोई मुझे इस समस्या को हल करने के बारे में संकेत दे सकता है तो मैं वास्तव में आभारी रहूंगा।

तो मैं आपको एक सूचक बता दूंगा क्योंकि मुझे जवाब नहीं पता है। :)

क्या आपने this question पढ़ा है जहां मुझे आपकी समस्या काफी समान थी?

+0

सूचक के लिए धन्यवाद! मैंने इसे पहले नहीं पढ़ा, लेकिन आप सही हैं, यह काफी समान दिखता है। यह एक दयालु बात है कि प्रस्तावित समाधान मेरे मामले में भी मदद नहीं करता है। मैं संभवतः अपने 'ऐप/वेबूट' को हार्ड वेबूट पर जोड़ने के लिए जा रहा हूं, जो निश्चित रूप से भविष्य में समस्या को आगे बढ़ाएगा। मैं अभी भी इसे हल करने में वास्तव में दिलचस्पी लेता हूं, आपको यह भी देखने के बाद और भी एक ही समस्या थी। पीएस .: कोई WAMP यहां शामिल है। – bfncs

+0

आप इसे भी पढ़ सकते हैं, विशेष रूप से टिप्पणियां, इस तरह मैंने अपनी समस्या हल की: http://bakery.cakephp.org/articles/BBBThunda/2010/02/25/troubleshooting-cakephp-installation-issues-related-to- apache-2-mod_rewrite-for-beginners –

+0

एएलएस, मैंने अंततः आपको जवाब दिया क्योंकि यह मेरी जरूरत के करीब आ गया और मैं अंक बर्बाद नहीं करना चाहता था। यह बहुत यकीन है कि होस्टर द्वारा कुछ अजीब सर्वर गलत कॉन्फ़िगरेशन था और वे इसे ठीक करने पर काम कर रहे हैं। इतने लंबे समय तक, मैं उचित डिफ़ॉल्ट के साथ '$ _SERVER' में मानों को ओवरराइट कर रहा हूं। यह वास्तव में, वास्तव में बदसूरत है, लेकिन यह एक वर्कअराउंड के रूप में काम करता है जब तक कि सर्वर कॉन्फ़िगर नहीं किया गया है। – bfncs

1

/~ उपयोगकर्ता नाम यूआरएल mod_userdir साथ उत्पन्न कर रहे हैं, mod_rewrite तथापि स्ट्रिप्स ~ वर्ण

तो डिफ़ॉल्ट केक htaccess फ़ाइलों का उपयोग, और जोड़ें:

RewriteBase /~username/path/to/cake 

सभी शामिल htaccess फ़ाइलों को

+0

मैं पढ़ने में भूलना ~/उपयोगकर्ता नाम फ़ाइलपैथ/~ उपयोगकर्ता नाम यूआरएल कृपया इस उत्तर को अनदेखा करें – Ceeram

+0

यह मदद नहीं करता है लेकिन वैसे भी, आपकी मदद के लिए बहुत बहुत धन्यवाद! – bfncs

1

पारंपरिक रूप से /cakephp/app/ स्तर पर केकपीएचपी आवेदन के अनुरोधों को पुनर्निर्देशित करेगा।

तथ्य यह है कि यह cakephp को नियंत्रक नाम के रूप में समझना चाहता है, यह एक मुद्दा है कि यह मुद्दा है।

आपकी समस्या शायद एएलएस से संबंधित है लेकिन बिल्कुल वही नहीं है। क्या आप वास्तव में चाहते हैं, क्योंकि आप अपने CakePHP अनुप्रयोग सर्वर की जड़ में रहते हैं प्रकट करने के लिए के लिए जब यह वास्तव में है नहीं है इरादा:

RewriteBase/

अन्य संभावित मुद्दा यह है कि अपने देव वातावरण के संपर्क में किसी भी कभी नहीं किया गया है फ़ाइल /cakephp/app के तहत .htaccess फ़ाइल से संबंधित संभावित दुष्प्रभाव।

क्या मैं

  1. ऐप्लिकेशन में/.htaccess कोशिश करेगा पहले/CakePHP फ़ोल्डर में RewriteBase रिश्तेदार जोड़ रहा है: /
  2. ऐप्लिकेशन में/webroot/.htaccess: /webroot/