कमांड लाइन से PHP कोड को कैसे निष्पादित करें?


163

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

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


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

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

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

2
तो phpinfo () आपको बताना चाहिए।
१०:१० पर jpic

जवाबों:


256

यदि आप कमांड लाइन में PHP करने जा रहे हैं, तो मैं आपको phpsh, एक सभ्य PHP शेल स्थापित करने की सलाह देता हूं । यह बहुत अधिक मजेदार है।

वैसे भी, कमांड लाइन से कोड निष्पादित करने के लिए 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";'

ऊपर दिए गए PHP कमांड को आउटपुट no और रिटर्न चाहिए 0जैसा कि आप देख सकते हैं:

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

एक और मजेदार स्विच है php -a :

-a               Run as interactive shell

यह phpsh की तुलना में लंगड़ा की तरह है , लेकिन अगर आप टैब पूरा करने, इतिहास, और इसी तरह से प्राप्त करने के लिए फेसबुक द्वारा बनाई गई php के लिए भयानक इंटरैक्टिव शेल स्थापित नहीं करना चाहते हैं , तो -a का उपयोग करें :

>>> php -a
Interactive shell

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

यदि यह आपके बॉक्स पर मेरे बॉक्स * es * ( उबंटू और आर्क पर परीक्षण ) पर काम नहीं करता है , तो संभवतः आपका PHP सेटअप फ़र्ज़ी या टूट गया है । यदि आप यह आदेश चलाते हैं:

php -i | grep 'API'

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

Server API => Command Line Interface

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

यदि आप देखते हैं कि आपका 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

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


हो सकता है कि आपका php सेटअप टूट गया हो। मैंने अपने उत्तर को संकेत सहित अद्यतन किया ताकि यह पता लगाया जा सके।
jpic

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

6
ध्यान दें कि phpsh अब इसके लेखक (फेसबुक) द्वारा बनाए नहीं रखा गया है और 2012 में Google समूह पृष्ठ पर किसी ने कहा है कि "phpsh वास्तव में समर्थित या उपयोगी नहीं है" । आप एक बेहतर php कंसोल के लिए Boris REPL में देख सकते हैं ।
बेन क्रेसी

3

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

php -i | grep sourceguardian

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


4
या तो मैं अंधा हूं या इस जवाब का सवाल से कोई लेना-देना नहीं है। इस सवाल का जवाब देने के लिए माना जाता है कि " कमांड को लाइन से सीधे PHP कोड कैसे चलाएं, .phpफाइल में PHP कोड को सहेजे बिना ? "
ट्रेडर

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

3

आप उपयोग कर सकते हैं :

 echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php

संक्षिप्त टैग " <! = " भी उपयोगी हो सकता है:

 echo '<?= function_exists("foo") ? "yes" : "no";' | php
 echo '<?= 8+7+9 ;' | php

Tha समापन टैग "?>" वैकल्पिक है, लेकिन अंतिम मत भूलना ";" !


2
यह 7 साल पुराने स्वीकृत उत्तर की तुलना में अधिक परेशानी वाला प्रतीत होता है। उपयोग करना php -rआपको PHP टैग खोलने के बारे में चिंता करने की आवश्यकता नहीं है।
miken32

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.