2012-03-17 22 views
23

लौटाता है आजकल मैं स्लिम फ्रेमवर्क का उपयोग कर रहा हूं, PHP वेब एपीआई विकसित करने के लिए मेरे सबसे सरल टूल के रूप में। का उपयोग करते हुए इन दो लेख:स्लिम फ्रेमवर्क हमेशा 404 त्रुटि

मैं वहाँ से चरणों में से कुछ का पालन करें। स्लिम फ्रेमवर्क डाउनलोड करना, सही निर्देशिका & फ़ाइलों को डालना। जैसे कि ध्यान बयान समायोजित करना;

//1. Require Slim 
require('Slim/Slim.php'); 

//2. Instantiate Slim 
$app = new Slim(); 

//3. Define routes 
$app->get('/books', function ($id) { 
    //Show book with id = $id 
}); 

और फिर, मैं तदनुसार बाकी को संशोधित करता हूं।

इस तरह मेरी चेकलिस्ट कि पहले से ही किया है:

  • LoadModule rewrite_module मॉड्यूल/mod_rewrite.so -> सक्षम
  • स्लिम .htaccess:

RewriteEngine RewriteCond% पर, {} REQUEST_FILENAME ! -एफ रिवाइटरूल ^ (। *) $ bootstrap.php [क्यूएसए, एल]

लेकिन, एक बार के बाद मैं इस कथन को चलाने;

$app->run(); 

और मैं इसे अपने ब्राउज़र पर चलने .... तो, मैं 404 त्रुटि जबकि यह मेरी स्थानीय होस्ट पर परीक्षण मिला है। इसे ठीक करने का समाधान क्या है?

एफवाईआई, यहां मेरी सबसे सरल PHP फ़ाइल है जिसे मैं वर्तमान में इसका उपयोग कर रहा हूं। (shared Link)

उत्तर

42

समस्या हल हो गई है!

मेरा अपाचे वास्तव में सामान्य है, और .htaccess फ़ाइल पहले भी सामान्य प्रदान की जाती है।

सुराग वह यूआरएल है जिसका मैंने उपयोग किया था। पहले मैंने अवैध यूआरएल का इस्तेमाल किया, इस प्रकार यह 404 पेज त्रुटि लौटा दी। मुझे बस एहसास हुआ जब मैंने ब्राउज़र के माध्यम से नए जीईटी यूआरएल तक पहुंचने का प्रयास किया;

http://localhost/dev/index.php/getUsers/user1 

और अब यह काम करता है!

मुझे ये बयान मिलने के बाद मुझे एहसास हुआ;

स्लिम यूआरआई कि HTTP अनुरोध यूआरआई से मेल के साथ मार्गों नहीं मिल रहा है, तो स्लिम स्वचालित रूप से एक 404 नहीं मिला जवाब वापस आ जाएगी।

स्लिम यूआरआई कि HTTP अनुरोध से मेल के साथ मार्गों मिलता है यूआरआई लेकिन HTTP अनुरोध विधि नहीं, स्लिम स्वचालित रूप से एक 405 पद्धति वापस आ जाएगी साथ अनुमति नहीं प्रतिक्रिया एक की अनुमति दें: शीर्ष लेख जिसका मूल्य सूचियों HTTP तरीकों कि के लिए स्वीकार्य हैं अनुरोधित संसाधन।

+9

बस समस्या को स्पष्ट करने, यूआरएल है कि आप से पहले उपयोग करने के लिए कोशिश कर रहे थे क्या था? – RPDeshaies

5

आप सही के बारे में अपनी फ़ाइल पर index.php शामिल करने के लिए कर रहे हैं, लेकिन ऐसा है क्योंकि आप अपने आधुनिक-पुनर्लेखन नीचे दिए गए लिंक की जांच करें साथ ठीक से काम नहीं कर रहे हैं:

https://github.com/codeguy/Slim

शुरू करने के भाग में आप देख सकते हैं अपने सर्वर को कॉन्फ़िगर कैसे (मामले में है कि आप उपयोग कर रहे थे अपाचे/lighttpd/ngynx)

0

मुझे लगता है कि तुम्हारी समस्या "संसाधन पार्सर" पर है, क्योंकि आप नहीं परिभाषित कर रहे हैं $ आईडी अनुरोध पर पैरामीटर, कृपया, tr y इस:

//1. Require Slim 
require('Slim/Slim.php'); 

//2. Instantiate Slim 
$app = new Slim(); 

//3. Define routes 
$app->get('/books/:id/', function ($id) { 
    echo json_encode(getBook($id)); 
}); 

// some stuff 
$app->run(); 

कृपया, हमें यह बताएं कि यह ठीक

21

है, जबकि "slimframework 404" googling मैं इस पोस्ट पाया। पद ने मुझे मेरी समस्या का हल करने के लिए प्रेरित किया।

समस्या

मैं Composer का उपयोग कर स्लिम ढांचे के साथ एक साइट की स्थापना की और निम्न उदाहरण कोड के रूप slimframework.com के साथ एक index.php बनाएँ:

<?php 
$app = new \Slim\Slim(); 
$app->get('/hello/:name', function ($name) { 
    echo "Hello, $name"; 
}); 
$app->run(); 

तो मैं करने की कोशिश http://localhost/hello/bob का उपयोग कर पृष्ठ तक पहुंचें। मैं एक 404 पृष्ठ नहीं मिला पृष्ठ वापस मिलता है।

मैं http://localhost/index.php/hello/bob का उपयोग कर पृष्ठ तक पहुंचने में सक्षम था।

समाधान

मैं /vendor/slim/.htaccess को देखकर समाधान (शामिल w/संगीतकार स्लिम स्थापित) और स्लिम ढांचा दस्तावेज की URL Rewriting अनुभाग।

मैंने /vendor/slim/.htaccess फ़ाइल की एक प्रति को मेरी index.php फ़ाइल के समान फ़ोल्डर में जोड़ा। फ़ाइल की सामग्री हैं:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

अब मैं http://localhost/hello/bob का उपयोग कर पृष्ठ का उपयोग कर सकते हैं।

+6

यदि सही '.htaccess' फ़ाइल जोड़ने के बाद भी समस्या बनी रहती है तो सुनिश्चित करें कि आपका वर्चुअल होस्ट' AllowOverride' विकल्प के साथ कॉन्फ़िगर किया गया है ताकि .htaccess पुन: लिखने के नियमों का उपयोग किया जा सके: '<निर्देशिका/var/www/html> \t AllowOverride सभी \t आदेश इनकार करते हैं, \t सभी \t ' – anj

+0

हाय @cutRateGamer से अनुमति दें अनुमति देते हैं, मैं AllowOverride सभी का उपयोग लेकिन सर्वर ने मुझे त्रुटि दिखाने 500 –

+1

टॉड-Birdsall जवाब + ANJ टिप्पणी = समाधान – NachPD

0

इसके अतिरिक्त mod_rewrite.so मॉड्यूल httpd.conf में लोड किया जाना चाहिए या आप त्रुटि 500.

LoadModule rewrite_module modules/mod_rewrite.so 
1

प्राप्त होगा मेरे लिए समस्या यह है कि मैं अपने दस्तावेज़ जड़ में एक .htaccess फ़ाइल प्रदान करने के लिए भूल गया था।

.htaccess

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L] 
0

आप उबंटू 16 पर स्लिम उपयोग कर रहे हैं।04 और आपको 404 त्रुटि मिल रही है। ऊपर टॉड Birdsall से इस परीक्षण का प्रयास करें:

इस काम करता है

http://localhost/index.php/hello/bob

और अपने सूचकांक के रूप में एक ही निर्देशिका में यह does not काम

http://localhost/hello/bob

और अपनी .htaccess फाइल। php और निम्नानुसार कॉन्फ़िगर किया गया है:

<IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteRule^index.php [QSA,L] 
    </IfModule> 

और आपको अभी भी अपाचे पर 404 त्रुटि मिलती है।

इस प्रकार अपाचे mod_rewrite को चालू करने की कोशिश करो और पुनः आरंभ अपाचे:

$ sudo पुनर्लेखन a2enmod

$ sudo सेवा apache2 पुनः आरंभ

स्लिम एपीआई सही ढंग से अब प्रदान की .htaccess फ़ाइल काम करना चाहिए होगा केवल तभी काम करें जब mod_rewrite सक्षम है और यह एक क्लीन इंस्टॉल पर डिफ़ॉल्ट नहीं है।

यदि आपको आवश्यकता है तो mod_rewirte को बंद करने का तरीका यहां दिया गया है।

$ sudo पुनर्लेखन a2dismod

$ sudo सेवा apache2 पुनः आरंभ

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