2009-06-04 12 views
11

मैं साझा होस्टिंग सेटअप पर केकेपीएचपी स्थापित करने की कोशिश कर रहा हूं। ~/public_html/देव/केक की तरह एक स्थान के लिए फ़ाइलों को निकालने और उचित URL पर जाकर (इस मामले http://hostname/~username/dev/cake/ में) के बाद, मैं त्रुटि 404: साझा होस्टिंग सेटअप के लिए kcphp .htaccess/mod_rewrite फिक्सिंग


नहीं मिला

अनुरोधित URL/usr/home/username/public_html/dev/cake/app/webroot/इस सर्वर पर नहीं मिला था।


मुझे लगता है कि है कि करीब से देखने पर, ~/public_html का निरपेक्ष पथ नहीं वास्तव में /usr/घर/उपयोगकर्ता नाम/public_html, बल्कि /usr/है इस का कारण www/उपयोगकर्ता/उपयोगकर्ता नाम/

यहाँ मैं क्या कोशिश कर दिया गया है (लेकिन स्पष्ट रूप से यह काम नहीं कर रहा) बताया गया है: (~/public_html/देव/केक/ऐप्स/webroot/.htaccess)

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /usr/www/users/username/dev/cake/app/webroot/ 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

दुर्भाग्य से, यह प्रतीत नहीं होता कुछ भी बदलने के लिए (404 संदेश वही रहता है)। विचार?

+0

यह ध्यान दिया जाना चाहिए कि यह 1.3 शैली है। 2.x के लिए नियम बदल गया है! यदि अब कोई केकपीएचपी के मौजूदा संस्करणों के साथ इसका उपयोग करने की कोशिश कर रहा है तो यह अब 'index.php?/$ 1' (कोई यूआरएल = भाग नहीं है) है। – mark

उत्तर

1

क्यों न केवल /usr/www/users/username/ पर फ़ाइलों को निकालें?

+0

तो मैंने चारों ओर देखा और मैं _think_ वह जगह है जहां फाइल वास्तव में रहते हैं। यदि मैं जोड़े (मेरा मेजबान) सही ढंग से समझता हूं, तो एक होम (/ usr/home/username) और एक वेब निर्देशिका (/ usr/www/उपयोगकर्ता/उपयोगकर्ता नाम) है, जो/usr/home/username/public_html पर सिंक्रनाइज़ है (उर्फ ~/public_html)। – user117643

1

मुझे लगता है कि .htaccess '~' पढ़ रहा है और सोच रहा है कि आप अपने घर फ़ोल्डर (जो लिनक्स में शॉर्टकट का कुछ है) को रेफर कर रहे हैं।

अपने ऐप को चलाने के लिए सबसे तेज़ तरीका है केक की कॉन्फ़िगर/core.php पर जाना और पुनः लिखने का उपयोग अक्षम करना (यह आपको कुछ सामानों को अपूर्ण करने और कुछ .htaccess फ़ाइल को हटाने के लिए कहता है)। दूसरा तरीका है। htaccess को संपादित करना और किसी भी तरह से यह बताएं कि '~' होम निर्देशिका को प्रतिबिंबित नहीं कर रहा है। शायद एक साधारण \ काम करेगा।

+0

पुनः लिखना अक्षम करना निश्चित रूप से काम करता है, धन्यवाद। मुझे लगता है कि मैं अभी इसके साथ भाग जाऊंगा। – user117643

+0

शायद यह समस्या नहीं है: मेरे पास मेरे बॉक्स (लोकलहोस्ट/~ उपयोगकर्ता/केक) पर एक समान सेटअप है और यह ठीक काम करता है। पुनः लिखने के लॉग को सक्षम करने का प्रयास करें: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog। यदि आपके होस्ट ने निर्देश अक्षम नहीं किया है, तो यह आपको यह देखने में मदद कर सकता है कि क्या गलत हो रहा है। –

2

आप गलत फ़ाइल को संशोधित कर रहे हैं। .htaccess फाइल आप संशोधित करने की आवश्यकता/dev में पाया जाता है, तो आप /dev/cake/app/webroot/.htaccess में एक नहीं संशोधित किया जाना चाहिए

13

RewriteBase /usr/www/users/username/dev/cake/app/webroot/ 

नहीं होना चाहिए
RewriteBase /~username/dev/cake/ 

RewriteBase आभासी लोगों को असली यूआरएल मैप करने की परवाह करता है, और मुझे लगता है कि आप यही चाहते हैं।

+3

हां, रीवाइटबेस ताज़ा/वर्चुअल यूआरएल को संदर्भित करता है, फाइल सिस्टम स्थान –

+0

पर नहीं, आपने इसे हल करने की मेरी खोज समाप्त कर दी है। धन्यवाद। धन्यवाद। –

1

मैं जोड़ी पर होस्टिंग कर रहा हूं और मैं फिर से लिखने के नियमों को काम करने में सक्षम था, लेकिन मुझे HTML-> लिंक पृष्ठों में सभी लिंक के लिए सॉर्ट पैरामीटर प्राप्त करने में समस्याएं आ रही हैं। वही कोड मेरी स्थानीय मशीन चलने वाली विंडो पर ठीक चलता है लेकिन जोड़ी सॉर्टिंग या बहुत से क्वेरी पैरामीटर (पृष्ठों को संपादित या अपडेट करें) पर समस्याएं होती हैं।

1

हां, आपको निम्न फ़ाइलों में DOCUMENT_ROOT पथ देना होगा। सही DOCUMENT_ROOT पथ प्राप्त करने के लिए कृपया अपने सर्वर के phpinfo() का संदर्भ लें। यह var/www/html/ जैसा कुछ होना चाहिए।

  1. ।जड़ में htaccess / निर्देशिका (अनुप्रयोग, केक बाहर, विक्रेताओं निर्देशिका) /एप्लिकेशन निर्देशिका /ऐप्लिकेशन के अंदर

    <IfModule mod_rewrite.c> 
        RewriteEngine on 
        RewriteRule ^$ DOCUMENT_ROOT/app/webroot/ [L] 
        RewriteRule (.*) DOCUMENT_ROOT/app/webroot/$1 [L] 
    </IfModule> 
    
  2. .htaccess अंदर

    <IfModule mod_rewrite.c> 
        RewriteEngine on 
        RewriteRule ^$) DOCUMENT_ROOT/app/webroot/ [L] 
        RewriteRule (.*) DOCUMENT_ROOT/app/webroot/$1 [L] 
    </IfModule> 
    
  3. .htaccess/webroot निर्देशिका

    <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteRule ^(.*)$ DOCUMENT_ROOT/app/webroot/index.php?url=$1 [QSA,L] 
    </IfModule> 
    

यह मेरे लिए काम किया।

+0

गोदाडी में tht कैसे ढूंढें? –

1

मुझे आधिकारिक केकेपीएचपी कॉकबुक से 'उन्नत स्थापना' के साथ समान समस्या थी। कुछ घंटों के बाद मैं इसे काम करने में कामयाब रहा।

ओएस: मैक ओएस एक्स

केक कोर निर्देशिका: /usr/lib/केक
मेरा आवेदन अनुप्रयोग निर्देशिका: /उपयोगकर्ताओं/MyUser/dev/MyApp
मेरा आवेदन webroot निर्देशिका: /उपयोगकर्ताओं/MyUser/ब्लॉग/MyApp

का संशोधन /Users/myuser/Sites/myapp/index.php

+०१२३५१६४१०६१
if (!defined('ROOT')) { 
    define('ROOT', DS.'Users'.DS.'myuser'.DS.'dev'); 
} 
if (!defined('APP_DIR')) { 
    define('APP_DIR', 'myapp'); 
} 
if (!defined('CAKE_CORE_INCLUDE_PATH')) { 
    define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'); 
} 

/Users/myuser/Sites/myapp/.htaccess का संशोधन

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase /~myuser/myapp/ 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

/Users/myuser/dev/myapp/.htaccess के लिए के रूप में - इस फ़ाइल में की जरूरत नहीं है इस विन्यास तो मैंने इसे हटा दिया। इस कॉन्फ़िगरेशन के साथ सबसे कठिन हिस्सा Apache में mod_rewrite को सक्षम कर रहा है। मैक संपादन पर /private/etc/apache2/httpd.conf व्यर्थ (इस कार्य के लिए) लगता है। प्रत्येक उपयोगकर्ता के लिए अतिरिक्त अपाचे कॉन्फ़िगरेशन फ़ाइल बनाई गई है।

<Directory "/Users/myuser/Sites/"> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 

डिफ़ॉल्ट AllowOverride तक /private/etc/apache2/users/myuser.conf की

संशोधन को कोई नहीं पर सेट है, इसलिए mod_rewrite इस विन्यास में काम नहीं करेगा।

इस परिवर्तन के बाद http://localhost/~myuser/myapp ठीक से काम करता है।

पीएस। टीएमपी निर्देशिका के लिए त्वरित अनुमति तय करें।

sudo chgrp -R www /Users/myuser/dev/myapp/tmp 
sudo chmod -R g+w /Users/myuser/dev/myapp/tmp 
2

मैं सिर्फ बाहर बात करने के लिए मैंने सोचा कि मॉड्यूल लोड किया गया था क्योंकि मैं कोड देखा था, लेकिन जाहिरा तौर पर यह सक्षम नहीं किया गया था चाहते हैं!

SSH (टर्मिनल) में यह सक्षम करने के लिए निम्न आदेश

sudo a2enmod rewrite 

टाइप कमांड नीचे अगर यह सूची तो आप इसे स्थापित किया है में प्रकट होता है, सभी मॉड्यूल है कि सक्रिय हैं दर्शाता है।

apache2ctl -M 

service apache2 restart 

PhpCake अब काम शुरू कर देना चाहिए के साथ सर्वर को पुनः आरंभ करना सुनिश्चित करें ...।

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