2011-10-06 11 views
11

के बजाय वेबसाइट रूट को आउटपुट करता है मैं सीएलआई के माध्यम से कोडिग्निटर चलाने पर this tutorial का पालन कर रहा हूं। मैंने यह सब कुछ किया है जो उन्होंने किया है (कॉपी और पेस्ट किया गया) अब जब मैं यह आदेश चलाता हूं, तो यह अपेक्षित नहीं करता है सिवाय इसके कि यह वेबसाइट इंडेक्स सामग्री को आउटपुट करता है।सीएलआई के माध्यम से कोडिग्निटर चलाना अपेक्षित परिणाम

$ cd /Users/MyUsername/Sites/code 
$ php index.php tools message 

मुझे प्राप्त होने वाला आउटपुट इंडेक्स पेज HTML स्रोत है, उदा। http://localhost/code

की उम्मीद परिणाम होना चाहिए

Hello World! 

मैं कैसे प्राप्त कर सकते हैं यह काम करने के लिए?

+0

आपका कोडइग्निटर संस्करण क्या है? – Vikk

+0

मेरा संस्करण 2.0.3 है। – MacMac

+1

और जब आप ब्राउज़र में टूल/संदेश एक्सेस करते हैं, तो आपको "हैलो वर्ल्ड!" मिलता है ? – imm

उत्तर

9

इस प्रयास करें:

php index.php/controller/function/param1/param2/param3 etc 

या

php index.php controller function param1 param2 param3 etc 

भी अपने $ _SERVER वर और config.php से 'uri_protocol' चर के मूल्य की सामग्री पोस्ट।

$config['uri_protocol'] = 'AUTO' 
मुख्य कॉन्फ़िग फ़ाइल में

:

$ config [ 'uri_protocol'] 'ऑटो'

+4

मुझे एक ही समस्या है, लेकिन जब मैं 'php index.php/tools/संदेश 'मेरे पास' कोई इनपुट फ़ाइल निर्दिष्ट नहीं है। 'त्रुटि – Mikhail

+0

मिखाइल, मुझे आपके जैसा ही समस्या है। क्या आपको एक समाधान मिला? –

+0

'php index.php/tools/message' जब मैं 'डॉकर निष्पादन' चलाता हूं तो काम नहीं कर रहा, मुझे 'ऑटो' होने के लिए $ config ['uri_protocol'] को बदलना होगा। – zx1986

1

मुझे प्राप्त होने वाला आउटपुट इंडेक्स पेज HTML स्रोत है, उदा। http://localhost/code

आपको अपने रूटिंग के साथ कोई त्रुटि मिली है, आपका नया उदाहरण सीएलआई नियंत्रक निकाल दिया नहीं गया है, लेकिन एक और नियंत्रक। कौन सा आपके रूटिंग के साथ त्रुटि में कहना मुश्किल है, क्योंकि आपने अपना पूरा कोड नहीं दिखाया है।

5

मेरे लिए इस बदलकर संकल्प लिया था होना चाहिए।

मैं पहले

'REQUEST_URI' 

करने के लिए इसे बदल गया था जो जाहिरा तौर पर CLI साथ काम नहीं करता।

+0

के बजाय **'/usr/local/bin/php' ** कमांड का उपयोग करना था धन्यवाद! यह वास्तव में मेरे लिए किया था। – fool4jesus

+0

uri_protocol सेट के साथ क्ली से भागने की कोशिश कर रहा था "PATH_INFO" पर काम नहीं किया, फिर इसे "ऑटो" में बदलकर मेरे लिए किया। धन्यवाद! –

1

मुझे पता है कि इस सवाल का पुराना है और पहले से ही उत्तर दिया गया है की तरह चलाते हैं, लेकिन अपने आप को और दूसरों के लिए, चयनित उत्तर काम नहीं करता है। जो काम मैंने पाया है वह सिर्फ wget का उपयोग कर रहा है। इससे पहले कि आप मुझे वोट दें क्योंकि आप ऐसा कुछ ढूंढ रहे हैं जो बाहरी आगंतुकों को अनुमति न दे, मुझे सुनें!

यदि आप wget का उपयोग $this->input->ip_address(); के साथ करते हैं तो आप यह सुनिश्चित कर सकते हैं कि आपकी स्क्रिप्ट तक पहुंचने वाली एकमात्र मशीन आपके स्वयं के वेबसर्वर है। यह php index.php controller function का उपयोग करके फ़ाइल को स्थानीय रूप से कॉल करने में सक्षम होने के समान नहीं है, लेकिन यह एक फॉलबैक है।

यहाँ है कि मैं क्या बनाया है जो बिना किसी समस्या कुछ महीनों के लिए काम किया है है:

  1. कहीं एक निर्देशिका बनाने के लिए अपने सर्वर है कि आप बस wget द्वारा बनाई गई अस्थायी फ़ाइलों के लिए एक स्क्रैच पैड के रूप में उपयोग कर सकते हैं पर। मैंने cron नामक एक फ़ोल्डर बनाया जो मेरे public_html फ़ोल्डर से नीचे एक स्तर है।

    पूर्व। /home/myuser/cron

  2. अपने क्रॉन कमांड का निर्माण करें। आप && का उपयोग कर कमांड को स्ट्रिंग कर सकते हैं।

    i। cd /home/myuser/cron && - अपनी स्क्रैच निर्देशिका

    ii पर जाएं Ii। wget http://www.site.com/cron/foo && - अपनी फ़ाइल

    iii। rm -f foo - अपने खरोंच निर्देशिका से डाउनलोड की गई फ़ाइल "foo" निकालें

  3. आपकी अंतिम आदेश कुछ इस तरह दिखेगा:

    cd /home/myuser/cron && wget http://www.site.com/cron/foo && rm -f foo

  4. चेक कि आईपी पते अपने क्रॉन फ़ाइलों तक पहुँचने के बराबर होती है अपने वेब सर्वर के आईपी:

    <?php defined('BASEPATH') OR exit('No direct script access allowed'); 
    
    class Cron extends MY_Controller { 
    
        public function __construct() 
        { 
    
         parent::__construct(); 
    
         // this controller can only be called from the IP xxx.xxx.xxx.xxx 
         if ($this->input->ip_address() !== 'xxx.xxx.xxx.xxx'){ 
    
          show_error('Direct access is not allowed'); 
    
         } 
    
        } 
    
        function foo($bar = 'bar') 
        { 
    
         echo $this->input->ip_address(); 
    
        } 
    
    } 
    

महत्वपूर्ण: कृपया सुनिश्चित करें कि आप rm -f के प्रभावों को पूरी तरह से समझते हैं। यदि आप सही फ़ाइल की आपूर्ति नहीं करते हैं तो इसमें दिलचस्प परिणाम हो सकते हैं। यदि आपके पास खाली समय है, तो आप फ़ाइल को हटाने का विकल्प चुन सकते हैं और समय-समय पर सभी क्रॉन स्क्रैच फ़ाइलों को मैन्युअल रूप से हटा सकते हैं।

+1

हाँ, यह उन लोगों के लिए बहुत अच्छा है जो 'wget' का उपयोग करना चाहते हैं। कृपया ध्यान दें कि 'wget' चलाने के बाद डाउनलोड किए गए पृष्ठ को हटाने के लिए आप '--delete-after' का उपयोग कर सकते हैं। – MacMac

+0

हम्म, मुझे इसके बारे में पता नहीं था। मुझे पहले मैन पेज पढ़ना चाहिए था। यह शायद आरएम का उपयोग करने से बेहतर है। – VictorKilo

0

ठीक है कहने के लिए खेद है, लेकिन यहाँ यह पेज https://ellislab.com/codeigniter/user-guide/general/cli.html

वे उल्लेख नहीं था, पर क्या फ़ोल्डर जहाँ हम CodeIgniter या नियंत्रक फ़ोल्डर जगह का रूट पथ। मैंने उस मुद्दे पर बहुत कुछ खोजा। मैंने अलग-अलग चीजों की कोशिश की और फिर मैंने पाया।

अपने पथ वातावरण चर { Run php file in windows CMD}

है कि सेट पीएचपी से पहले

पथ वातावरण चर

  1. सेट करने के बाद cmd को
  2. सीडी पथ जहां CodeIgniter डाल (जाना यानी सीआई /)
  3. php index.php/tools/message

आपको

Hello World! 

आपकी cmd स्क्रीन पर मिलेगा।

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