2012-03-01 18 views
107

मैं एक एकल php बयान एक अलग php फ़ाइल का उपयोग किए बिना आदेश पंक्ति के साथ सीधे if(function_exists("my_func")) echo 'function exists'; तरह अमल करना चाहते हैं।कमांड लाइन से PHP कोड निष्पादित करने के लिए कैसे?

यह कैसे संभव है?

+1

फ़ंक्शन_एक्सिस्ट्स() को उपयोगकर्ता परिभाषित फ़ंक्शन वाली किसी अन्य फाइल का उपयोग किए बिना, PHP संस्करण का परीक्षण करने के अलावा, जो आप अन्य तरीकों से खोज सकते हैं, के बिना बहुत अच्छा नहीं होने वाला है। आप किस फ़ंक्शन का परीक्षण करना चाहते हैं? –

+0

मैं इस फ़ंक्शन का परीक्षण करने के लिए देख रहा हूं: sg_load() – Steve

+2

लगता है कि आप वास्तव में क्या चाहते हैं यह पता लगाने के लिए है कि स्रोतगार्डियन PHP एक्सटेंशन सक्षम है या नहीं? –

उत्तर

173

यदि आप कमांड लाइन में PHP करने जा रहे हैं, तो मैं आपको phpsh, a decent PHP shell इंस्टॉल करने की सलाह देता हूं। यह बहुत अधिक मजेदार है।

वैसे भी, php आदेश कमांड लाइन से कोड निष्पादित करने के लिए दो स्विच प्रदान करता है:

-r <code>  Run PHP <code> without using script tags <?..?> 
-R <code>  Run PHP <code> for every input line 

आप उपयोग कर सकते हैं php के -r जैसे स्विच:

php -r 'echo function_exists("foo") ? "yes" : "no";' 

ऊपर पीएचपी आदेश ऊपर होना चाहिए उत्पादनno और रिटर्न0 जैसा कि आप देख सकते हैं:

>>> php -r 'echo function_exists("foo") ? "yes" : "no";' 
no 
>>> echo $? # print the return value of the previous command 
0 

एक और अजीब स्विच है -एक php: स्थापित करने के लिए अगर आप नहीं चाहते

-a    Run as interactive shell 

यह phpsh की तुलना में लंगड़ा के तरह है, लेकिन the awesome interactive shell for php made by facebook to get tab completion, history, and so on, फिर उपयोग -a:

>>> php -a 
Interactive shell 

php > echo function_exists("foo") ? "yes" : "no"; 
no 
php > 

यह मेरा बॉक्स * तों * (Ubuntu और आर्क पर परीक्षण किया) पर की तरह अपने बॉक्स पर काम नहीं करता है, तो शायद अपने PHP सेटअप अस्पष्ट या टूट रहा है। आप इस आदेश को चलाते हैं:

php -i | grep 'API' 

आप देखना चाहिए:

Server API => Command Line Interface 

आप नहीं करते हैं, इसका मतलब है कि शायद एक और आदेश CLI SAPI प्रदान करेगा। PHP-cli आज़माएं, शायद यह आपके ओएस में एक पैकेज या कमांड उपलब्ध है।

आप कि आपके php आदेश CLI (कमांड लाइन इंटरफेस) SAPI (सर्वर API) का उपयोग करता दिखाई देता है, तो चलाने php -h | grep codeको जो पागल स्विच पता लगाना - के रूप में इस के लिए साल की अनुमति देता है नहीं बदला है अपने संस्करण/सेटअप में कोड चलाने के लिए।

उदाहरण के एक और जोड़ी, बस यकीन है कि यह मेरी बक्से पर काम करता है बनाने के लिए:

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";' 
no 
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";' 
yes 

इसके अलावा, ध्यान दें कि यह संभव है कि एक विस्तार CLI और सीजीआई में नहीं या अपाचे SAPI में भरी हुई है।ऐसा लगता है कि कई PHP SAPI विभिन्न php.ini फ़ाइलों का उपयोग करते हैं, उदा। एक जेनेटू बॉक्स पर /etc/php/cli/php.ini बनाम /etc/php/cgi/php.ini बनाम /etc/php/apache/php.ini बनाम। पता लगाएं कि कौन सी आईएनआई फ़ाइल php -i | grep ini के साथ प्रयोग की जाती है।

+3

यह कुछ भी वापस नहीं करता – Steve

+0

शायद आपका PHP सेटअप टूट गया है। मैंने अपने जवाब को अद्यतन करने के लिए संकेतों सहित अपडेट किया। – jpic

+0

php -a के बारे में एक नोट जोड़ा गया जो आपके लिए उपयोगी हो सकता है। – jpic

1

कमांड लाइन पर:

php -i | grep sourceguardian 

यदि यह वहाँ है, तो आप कुछ पाठ मिल जाएगा। यदि नहीं, तो आपको कोई चीज़ नहीं मिलेगी।

+0

या तो मैं अंधा हूं या इस उत्तर के पास इस सवाल से कोई लेना देना नहीं है। इस जवाब को प्रश्न का उत्तर देने के लिए कहा गया है कि "PHP कोड को सीधे। कमांड लाइन से कैसे चलाएं, PHP कोड को '.php' फ़ाइल में सहेजे बिना? _"? – trejder

+6

@trejder एक पल के लिए मैंने सोचा कि क्या मैंने गलत सवाल का जवाब दिया होगा, लेकिन फिर मैंने संपादन इतिहास और टिप्पणियों को देखा। यह उत्तर देता है कि ओपी को वास्तव में क्या चाहिए: यह पता लगाना कि कोई विशेष PHP एक्सटेंशन लोड किया गया था या नहीं। सवाल तब से दोहराया गया है, इसलिए अब यह इतना अच्छा नहीं है। –

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