कमांड लाइन से PHP स्क्रिप्ट चल रहा है


85

मैं वेब स्क्रिप्ट को पार्स करने के लिए उपयोग किए जाने वाले PHP दुभाषिया का उपयोग करके कमांड लाइन से एक PHP स्क्रिप्ट कैसे चला सकता हूं?

मेरे पास एक phpinfo.phpफ़ाइल है जो Germanस्थापित किए गए वेब शो से एक्सेस की गई है। हालाँकि, अगर मैं phpinfo.phpकमांड लाइन से रन करता हूँ - php phpinfo.phpऔर इसके grepलिए German, मुझे यह नहीं मिला। तो दोनों phps अलग हैं। मुझे एक स्क्रिप्ट चलाने की ज़रूरत है, phpजिस Germanपर स्थापित है।

मैं यह कैसे कर सकता हूँ?


1
बस करो php -iऔर पार्स करो कि
लॉरेंस चेरोन

1
इसका क्या मतलब है? मैंने उस समय भी कुछ नहीं किया था
सिद्धार्थ

1
कृपया स्थापित वेब सर्वर सॉफ़्टवेयर के बारे में अधिक जानकारी जोड़ें , उदाहरण के phpinfo();लिए अपने प्रश्न से आउटपुट जोड़ें । मेरे उत्तर को भी अपडेट किया।
संपो सरला - codidact.org

जवाबों:


166

अपडेट करें:

गलतफहमी के बाद, आखिरकार मुझे वही मिला जो आप करने की कोशिश कर रहे हैं। आपको अपने सर्वर कॉन्फ़िगरेशन फ़ाइलों की जांच करनी चाहिए; क्या आप Apache2 या कुछ अन्य सर्वर सॉफ़्टवेयर का उपयोग कर रहे हैं?

उन पंक्तियों की तलाश करें जो इसके साथ शुरू होती हैं LoadModule php... संभवतया कॉन्फ़िगरेशन फ़ाइल / निर्देशिकाएं हैं जिनका नाम modsया ऐसा कुछ है, वहां से शुरू करें।

आप वेब सर्वर से php -r 'phpinfo();' | grep phpलाइनों की आउटपुट की जाँच और तुलना भी कर सकते हैं phpinfo();

phpअंतःक्रियात्मक रूप से चलाने के लिए:

(इसलिए आप सांत्वना में कोड पेस्ट / लिख सकते हैं)

php -a

यह पार्स फाइल और आउटपुट को कंसोल बनाने के लिए:

php -f file.php

पार्स फाइल और दूसरी फाइल पर आउटपुट:

php -f file.php > results.html

क्या आपको कुछ और चहिए?

केवल छोटे भाग, एक पंक्ति या जैसे चलाने के लिए, आप इसका उपयोग कर सकते हैं:

php -r '$x = "Hello World"; echo "$x\n";'

अगर आप linux चला रहे हैं तो man phpकंसोल पर करें।

अगर आपको fpm के माध्यम से php चलाने की आवश्यकता है / चाहते हैं, तो cli fcgi का उपयोग करें

SCRIPT_NAME="file.php" SCRIP_FILENAME="file.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"

जहाँ /var/run/php-fpm/php-fpm.sock आपकी php-fpm सॉकेट फ़ाइल है।


4
नहीं, समस्या यह है कि सिस्टम पर कई phps हैं। मुझे यह पता लगाने की आवश्यकता है कि वेब स्क्रिप्ट को पार्स करने के लिए किस php का उपयोग किया जाता है। अगर मैं कंसोल से php चलाता हूं, तो यह एक क्लास नहीं मिल सकता है - लेकिन अगर मैं वेब से उस स्क्रिप्ट को कॉल करता हूं तो यह समस्या नहीं है। तो इसका मतलब है कि जो PHP का उपयोग किया जाता है वह अलग है, है ना?
सिद्धार्थ

2
@ सिद्धार्थ आपको अपने सर्वर के s / w विन्यास से जांचना चाहिए। सवाल करने के लिए अपने सर्वर विवरण जोड़ें।
संपो सरला - codidact.org

2
हाँ। मैं कैसे जांच कर सकता हूं? संक्षेप में, मैं कमांड लाइन से सही php का उपयोग कैसे कर सकता हूं?
सिद्धार्थ

2
लिनक्स में, आप यह which phpबताने के लिए उपयोग कर सकते हैं कि आप किस निष्पादन योग्य डिफ़ॉल्ट रूप से चल रहे हैं। किसी अन्य निष्पादन योग्य का उपयोग करने के लिए, आपको अपने द्वारा उपयोग किए जाने वाले निष्पादन योग्य के लिए पूर्ण पथ निर्दिष्ट करना होगा:/path/to/specific/php -f file.php > results.html
एमिलियो पी।

1
अच्छा विवरण, स्पष्टीकरण के लिए +1। बस यहाँ टिप्पणी करने के लिए, पर्यावरण के संस्करणों के साथ देखें, हो सकता है कि आपको पूरी निर्देशिका पथ का उपयोग करने की आवश्यकता हो, जब स्क्रिप्ट उसी निर्देशिका में हो जो php.exe
Leandro

3

SuSE पर, PHP के लिए दो अलग-अलग कॉन्फ़िगरेशन फ़ाइलें हैं: एक अपाचे के लिए, और एक CLI (कमांड लाइन इंटरफ़ेस) के लिए। / Etc / php5 / निर्देशिका में, आपको "apache2" निर्देशिका और "cli" निर्देशिका मिलेगी। प्रत्येक में एक "php.ini" फ़ाइल है। फाइलें एक ही उद्देश्य (php कॉन्फ़िगरेशन) के लिए हैं, लेकिन PHP चलाने के दो अलग-अलग तरीकों पर लागू होती हैं। ये फाइलें, अन्य चीजों के साथ, PHP का उपयोग करने वाले मॉड्यूल को लोड करती हैं।

यदि आपका OS समान है, तो ये दोनों फाइलें संभवतः समान नहीं हैं। आपका Apache php.ini शायद गियरमैन मॉड्यूल लोड कर रहा है, जबकि cli php.ini नहीं है। जब मॉड्यूल स्थापित किया गया था (ऑटो या मैनुअल), तो यह शायद केवल Apache php.ini फ़ाइल को अद्यतन करता है।

आप बस अपाचे php.ini फ़ाइल को प्रतिलिपि निर्देशिका में CLI वातावरण में अपाचे वातावरण की तरह बनाने के लिए कॉपी कर सकते हैं।

या, आप अपाचे फ़ाइल में गियरमैन मॉड्यूल को लोड करने वाली रेखा पा सकते हैं और इसे CLI फ़ाइल में कॉपी / पेस्ट कर सकते हैं।


3

मैं विंडोज में इस मुद्दे के समाधान की तलाश कर रहा था, और ऐसा लगता है कि यदि आपके पास वातावरण vars ठीक नहीं है, तो आपको पूरी निर्देशिका डालने की आवश्यकता है। उदाहरण के लिए। PHP की तुलना में एक ही निर्देशिका में एक फ़ाइल के साथ:

F:\myfolder\php\php.exe -f F:\myfolder\php\script.php

यदि आप इस शब्दशः को कमांड प्रॉम्प्ट से चलाते हैं, तो >प्रारंभ में संभवतः -f ...आपके php.exe फ़ाइल में (संभावित त्रुटि) के आउटपुट को रीडायरेक्ट करेगा , और सामग्री को मिटा देगा।
mwfearnley
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.