2014-04-10 5 views
7

के माध्यम से ज़ेंडगार्ड के साथ एन्कोड किए गए PHP स्क्रिप्ट निष्पादित करें मुझे कमांड लाइन (PHP सीएलआई) से कुछ फ़ाइलों को चलाने की आवश्यकता है जो ज़ेंड गार्ड और PHP द्वारा एन्क्रिप्ट किए गए थे, जैसे ही यह बिना किसी त्रुटि संदेश के एन्कोडेड फ़ाइल तक पहुंच जाता है । क्या कमांड लाइन से ज़ेंड गार्ड द्वारा एन्कोड किए गए PHP स्क्रिप्ट निष्पादित करना संभव है?कमांड लाइन

अधिक जानकारी

आवेदन मैं वर्तमान पर काम कर रहा हूँ, कुछ कार्यों को समय पर चलने की जरूरत है। सबसे पहले, हमने कुछ यूआरएल के लिए नियंत्रकों को लागू किया जहां केवल कार्यों को चलाने के लिए उपयोग किया जाता था। फिर हम उन पृष्ठों पर wget का उपयोग करके एक क्रॉन नौकरी करेंगे। समस्या यह है कि उन कार्यों में से कुछ को चलाने के लिए पैरामीटर की आवश्यकता होती है। POST अनुरोध करने के लिए wget का उपयोग करना पहली बात नहीं है क्योंकि ज़ेंड गार्ड करता है कुकी को असाइन करता है और फिर उसी यूआरएल पर रीडायरेक्ट करता है। दूसरे अनुरोध पर, चूंकि यह अब जीईटी में है, सभी पैरामीटर खो गए थे।

फिर हमने समस्या को ठीक करने के लिए कमांड लाइन स्क्रिप्ट पर जाने का निर्णय लिया। हमें वास्तव में यह दृष्टिकोण पसंद है क्योंकि यह उन समस्याओं को हल करता है जिनके साथ हमने URL- आधारित एक किया है। सबसे पहले, यह एक विस्तारित अवधि के लिए एक खुला अपाचे कनेक्शन नहीं रखता है। साथ ही, यह सार्वजनिक यूआरएल पर कुछ आंतरिक तर्क का पर्दाफाश नहीं करता है। जैसा कि मैंने पहले बताया था, जब हम इन कमांड लाइन स्क्रिप्ट को निष्पादित करने का प्रयास करते हैं, कुछ भी नहीं होता है, एप्लिकेशन बस छोड़ देता है।

हम उबंटू 12.04 एलटीएस, PHP 5.4.25 और अपाचे 2.2.22 का उपयोग कर रहे हैं। मैंने सुनिश्चित किया कि ज़ेंड गार्ड एक्सटेंशन को कमांड लाइन में सही ढंग से लोड किया गया था। साथ ही, यह वेब ब्राउज़र द्वारा पृष्ठों तक पहुंचने पर सही तरीके से काम करता है।

यदि कोई इस समस्या के साथ मेरी मदद कर सकता है, तो इसकी बहुत सराहना की जाएगी। धन्यवाद!

+1

विफलता के बारे में आपके लॉग में कुछ भी है? क्या आपने अपना लॉग स्तर बढ़ाने की कोशिश की है? – halfer

+0

आपने अपना ज़ेंड गार्ड मॉड्यूल कहाँ शामिल किया था? क्या आप सटीक विवरण दिखा सकते हैं कि निर्देशिकाओं में ज़ेंड गार्ड मॉड्यूल किस प्रकार और किस फाइल में सक्षम है? –

+0

एक छोटी PHP स्क्रिप्ट लिखने के बारे में क्या है जो 'curl की स्क्रिप्ट है? पहला 'कर्ल' कनेक्शन खोलता है, कुकी प्राप्त करता है और रीडायरेक्ट हो जाता है। दूसरा 'कर्ल' एक POST अनुरोध करता है और कुकी भेजता है। आपके दूसरे दृष्टिकोण के फायदे नहीं हैं लेकिन मुझे लगता है कि यह काम करेगा। – Reeno

उत्तर

2

मैं यहां एक धारणा बनाने जा रहा हूं। जब आप कमांड लाइन से चलाने के लिए स्क्रिप्ट ले जाते थे, तो आपने वास्तव में स्क्रिप्ट को फिर से लिख नहीं लिया था। यूआरएल पर wget की बजाय फ़ाइल पर आप बस php -f करें।

यदि ऐसा है, तो संभवतः आपके पास स्क्रिप्ट में कुछ तर्क है जिसके लिए पैरामीटर नहीं मिला है, तो निकास/मरने के साथ प्रमाणीकरण या वेब सर्वर तर्क की आवश्यकता होती है। आपने उल्लेख किया है कि कुछ स्क्रिप्ट को चलाने के लिए POST की आवश्यकता होती है, इसलिए मेरा अनुमान होगा कि वहां $ _POST कहीं ऐसा होगा जो स्पष्ट रूप से कमांड लाइन पर काम नहीं करेगा।

हालांकि एक अनुमान है।

संपादित करें: बस उस हिस्से को पढ़ें जहां आपने कहा था कि जब आप यूआरएल के माध्यम से पहुंचते हैं तो यह काम करता है। लगभग निश्चित रूप से एक $ _POST या कुछ समान है।

0

आप किसी भी तर्क आप की तरह

$cli = isset($_ENV['SSH_CLIENT']); 
if($cli) { 
    // Code to run from command line here 

} else { 
    // Code for the Web here 


} 

कुछ अंदर अपने php लिपि में कमांड लाइन से चलाना चाहते हैं लपेट चाहिए यह आप वेब से एक ही फाइल चलाने की अनुमति होगी, और कमांड लाइन से। tazer84 का उल्लेख किया गया है - सुनिश्चित करें कि सीएलआई मोड में, आप वेब केवल तर्क (ऐसे header('location: ...');, $_COOKIE, $_POST, आदि), और उप-वर्सो शामिल नहीं हैं।