WAMPServer में विंडोज कमांड लाइन से PHP कैसे चलाएं


81

मैं php नया हूँ और कमांड लाइन से php चलाना चाहता हूँ। मैंने WAMP स्थापित किया है और "सिस्टम चर" को अपने php फ़ोल्डर (जो है C:\wamp\bin\php\php5.4.3) पर सेट किया है।

जब मैं जाता हूं Run-> CMD-> टाइप php -aऔर हिट दर्ज करें, यह कहता है interactive mode enabled। लेकिन जब मैं लिखता हूं तो echo 'Hi';यह कुछ नहीं दिखाता है।

मैं भी 'php> "जैसा कुछ नहीं देखता, जब मैं टाइप करता हूँ php -aऔर एंटर करता हूँ।



जहां तक ​​मैं बता सकता हूं कि विंडोज के लिए एकमात्र उचित विकल्प उत्कृष्ट psysh का उपयोग करना है , इस अन्य SO उत्तर से अनुशंसित है: stackoverflow.com/a/33790472/327074
icc97

जवाबों:


72

PHP CLI को इसके नाम से जाना जाता है (कमांड लाइन इंटरफेस के लिए php) को php.exe कहा जाता है c:\wamp\bin\php\php5.x.y\php.exe (जहाँ x और y php के संस्करण संख्याएँ हैं जिन्हें आपने स्थापित किया है)

यदि आप कमांड लाइन से चलाने के लिए php स्क्रिप्स बनाना चाहते हैं तो इसके आसान और बहुत उपयोगी हैं।

अपने आप को इस तरह एक बैच फ़ाइल बनाएँ, इसे कॉल करने दें phppath.cmd:

PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v

x.y.zPHP के एक संस्करण के लिए एक मान्य फ़ोल्डर नाम को बदलें जिसे आपने WAMPServer के भीतर स्थापित किया है

इसे अपने किसी ऐसे फ़ोल्डर में सहेजें, जो पहले से ही आपके PATH पर है, इसलिए आप इसे कहीं से भी चला सकते हैं।

अब एक कमांड विंडो से, अपने सोर्स फोल्डर में cd और रन> phppath।

फिर भागो

php your_script.php

यह एक सपने की तरह काम करना चाहिए।

यहां एक उदाहरण दिया गया है जो यदि आवश्यक हो तो PHP संगीतकार और PEAR को कॉन्फ़िगर करता है

@echo off

REM **************************************************************
REM * PLACE This file in a folder that is already on your PATH
REM * Or just put it in your C:\Windows folder as that is on the
REM * Search path by default
REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer
REM **************************************************************


set baseWamp=D:\wamp
set defaultPHPver=7.4.3
set composerInstalled=%baseWamp%\composer
set phpFolder=\bin\php\php

if %1.==. (
    set phpver=%baseWamp%%phpFolder%%defaultPHPver%
) else (
    set phpver=%baseWamp%%phpFolder%%1
)

PATH=%PATH%;%phpver%
php -v
echo ---------------------------------------------------------------


REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP

IF exist %phpver%\pear (
    set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear
    set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs
    set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data
    set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe
    set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests

    echo PEAR INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
) else (
    echo PEAR DOES NOT EXIST IN THIS VERSION OF php
    echo ---------------------------------------------------------------
)

REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM **************************************************************
REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM *
REM * This assumes that composer is installed in /wamp/composer
REM *
REM **************************************************************
IF EXIST %composerInstalled% (
    ECHO COMPOSER INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
    set COMPOSER_HOME=%baseWamp%\composer
    set COMPOSER_CACHE_DIR=%baseWamp%\composer

    PATH=%PATH%;%baseWamp%\composer

    rem echo TO UPDATE COMPOSER do > composer self-update
    echo ---------------------------------------------------------------
) else (
    echo ---------------------------------------------------------------
    echo COMPOSER IS NOT INSTALLED
    echo ---------------------------------------------------------------
)

set baseWamp=
set defaultPHPver=
set composerInstalled=
set phpFolder=

PHP के डिफ़ॉल्ट संस्करण का उपयोग करने के लिए इस तरह की कमांड फाइल को कॉल करें

> phppath

या इस तरह PHP का एक विशिष्ट संस्करण प्राप्त करने के लिए

> phppath 5.6.30

1
यह काम करता है, धन्यवाद। क्या आप बता सकते हैं कि यह कैसे काम करता है? मैं फ़ोल्डर को पथ देखता हूं, लेकिन कमांड लाइन चर "php" के साथ इसे कैसे जोड़ता है, और वह PATH =% PATH% क्या करता है?
तेतरीदेव

PATH=%PATH%कहते हैं कि वर्तमान पथ के साथ एक नया पेटिश एनवायरमेंट वेरिएबल बनाएं %PATH%और साथ ही नई निर्देशिका जिसे हम इसमें जोड़ना चाहते हैं। विंडोज ने निष्पादनयोग्य यानी 'php.exe' को खोजने के लिए PATH में फ़ोल्डर्स खोजे जो कि यह वर्तमान कार्यशील निर्देशिका में नहीं मिल सकता है।
रिग्सफॉली

1
यह W10 पर ठीक काम करता है। आपने कुछ गलत किया होगा
RiggsFolly

OP प्रभावी रूप से Windows में PHP REPL के लिए पूछ रहा था। मुझे नहीं लगता कि यह प्रश्न का उत्तर देता है
icc97

1
@ कुल्लू पावर शेल में काम नहीं कर रहा है - सामान्य शेल में यह काम करता है
जोहानिस

36

मुझे याद है एक बार जब मैं कुछ साल पहले इस मुद्दे पर लड़खड़ाया था, यह इसलिए है क्योंकि विंडोज़ में रीडलाइन नहीं है, इसलिए कोई इंटरेक्टिव शेल नहीं है, रीडलाइन समर्थन के बिना php इंटरैक्टिव मोड का उपयोग करने के लिए, आप इसके बजाय ऐसा कर सकते हैं:

C:\>php -a 
Interactive mode enabled 

<?php 
echo "Hello, world!"; 
?> 
^Z 
Hello, world!

इंटरेक्टिव मोड में प्रवेश करने के बाद, ओपनिंग ( <?php) और क्लोजिंग ( ?>) php टैग, और कंट्रोल Z ( ) के साथ टाइप करें^Z ) के जो फाइल के अंत को दर्शाता है।

मुझे यह भी याद है कि मुझे php की साइट उपयोगकर्ता टिप्पणी से समाधान मिला: http://www.php.net/manual/en/features.commandline.interactive.php#105729


PHP 7.1 ने readlineविंडोज़ बिल्ड में सक्षम किया है। ऐसा करने php -aसे आप इसे ले जाएंगे Interactive Shellऔर आदेशों को निष्पादित करने की अनुमति देंगे जैसे कि आप हिट दर्ज करते हैं, टाइप करने की कोई आवश्यकता नहीं है <?php... इस अंतर के लिए यह टिप्पणी देखें: be2.php.net/manual/en/…
superphonic

12

बैच फ़ाइल का उपयोग करके देखें

  1. नोटपैड खोलें
  2. प्रकार php -S localhost:8000
  3. फ़ाइल को .batएक्सटेंशन के रूप में सहेजें ,server.bat
  4. अब server.batफाइल पर क्लिक करें आपका सर्वर तैयार हैhttp://localhost:8000

निर्भरता

अगर आपको एरर php मिला है तो किसी भी इंटरनल या एक्सटर्नल कमांड को न पहचानें, गोटो एनवायरनमेंट वेरिएबल और php.exe का पाथ एडिट करें "C:\wamp\bin\php\php5.4.3"


WAMPServer के साथ आपको रास्ते में कभी भी कुछ नहीं जोड़ना चाहिए। यह
RiggsFolly

11

आपके द्वारा PHP के अपने संस्करण जैसी ध्वनियों का वर्णन करने में समस्या रीडलाइन PHP मॉड्यूल को याद कर रही हो सकती है, जिससे इंटरैक्टिव शेल काम नहीं कर सकता है। मैं इस PHP बग पर इसे आधार बनाता हूं सबमिशन के ।

दौड़ने की कोशिश करो

php -m

और देखें कि आउटपुट में "रीडलाइन" दिखाई देती है या नहीं।

वितरण से रीडलाइन को छोड़ने के अच्छे कारण हो सकते हैं। PHP को आमतौर पर एक वेब सर्वर द्वारा निष्पादित किया जाता है; तो यह वास्तव में सबसे अधिक उपयोग के मामलों के लिए की जरूरत नहीं है। मुझे यकीन है कि आप कमांड प्रॉम्प्ट से फाइल में PHP कोड का उपयोग कर सकते हैं:

php file.php

वहाँ भी phpsh है प्रोजेक्ट जो PHP के लिए एक (बेहतर) इंटरेक्टिव शेल प्रदान करता है। हालांकि, कुछ लोगों को इसे विंडोज के तहत चलाने में परेशानी हुई है (मैंने खुद यह कोशिश नहीं की थी)।

संपादित करें : यहां प्रलेखन के अनुसार , readlineविंडोज के तहत समर्थित नहीं है:

नोट: यह एक्सटेंशन विंडोज प्लेटफॉर्म पर उपलब्ध नहीं है।

इसलिए, यदि यह सही है, तो आपके विकल्प हैं:

  • इंटरेक्टिव शेल से बचें, और कमांड लाइन से फ़ाइलों में बस PHP कोड निष्पादित करें - यह अच्छी तरह से काम करना चाहिए
  • Windows के तहत काम करने के लिए phpsh प्राप्त करने का प्रयास करें

नहीं यह प्रकट नहीं होता है? इसका क्या मतलब है?
दमन

इसका मतलब है कि इंटरैक्टिव मोड आपके PHP वितरण में काम नहीं करता है। मुझे लगता है कि आप .php फ़ाइलों में कोड डालना और कमांड लाइन से या वेब सर्वर के माध्यम से उन पर अमल करना सबसे अच्छा है - जो काम करने चाहिए। मेरे उत्तर की लिंक में उल्लेख किया गया है कि आप PHP को स्रोत से संकलित कर सकते हैं और readlineइसे काम करने के लिए शामिल कर सकते हैं - लेकिन यह विंडोज पर एक छोटा सा प्रयास हो सकता है यदि आपके पास आवश्यक अनुभव नहीं है और संपूर्ण टूलकिन स्थापित है।
ड्रिस

@driis मैंने फेसबुक से phpsh का उपयोग करने के लिए अजगर स्थापित किया था, लेकिन बहुत शोध के बाद मैंने पाया कि phpsh अजगर 3 के साथ संगत नहीं है :( phpsh की तरह ही कुछ है जो अजगर 3 द्वारा समर्थित है?
दमन

@Daman, क्षमा करें, मुझे कुछ भी पता नहीं है। शायद पायथन 2 स्थापित करें? इसके अलावा, मुझे लगता है कि लोगों को भी विंडोज के तहत phpsh चलाने के मुद्दे रहे हैं, फिर से, मैं खुद को कोशिश नहीं की।
ड्रिस

10

यदि आप एक त्वरित कोड स्निपेट चलाना चाहते हैं, तो आप -r विकल्प का उपयोग कर सकते हैं:

php -r "echo 'hi';"

-r स्क्रिप्ट टैग का उपयोग किए बिना कोड चलाने की अनुमति देता है <?..?>


4

आप php का उपयोग करके php पेज चला सकते हैं। php कोड के साथ और cmd लिखने में कुछ php फ़ाइल बनाएँ "[PATH to php.ext]\php.exe [path_to_file]\file.php"


आपके php.exe का पथ क्या है?
आदिदी

C: \ wamp \ bin \ php \ php5.4.3 \ php.exe
दमन

1
इसलिए बनाने के लिए php पृष्ठ नाम test.php के साथ <? php प्रतिध्वनि ('परीक्षण') कहते हैं; ?> - इसे c पर रखें: / अपनी कमांड लाइन खोलें और "C: \ wamp \ bin \ php \ php5.4.3 \ php.exe" "c: \ test.php" टाइप करें - आप क्या देखते हैं?
आदिदी

2

UPDATED कुछ अनुसंधान के बाद, सबसे अच्छा समाधान है कि जानकारी का इस्तेमाल किया गया एक और stackoverflow धागा से बचने के लिए Ctrl + Z इनपुट करने के लिए है और यह भी रोड़ी उत्पादन से। तो, php -aआप के बजाय का उपयोग करना चाहिएcall "php.exe" -f NAMED_SCRIPT.php

OLD Readline विंडोज के तहत संभव नहीं है, इसलिए php में लिखे गए किसी भी मौजूदा php गोले से काम नहीं चलेगा। लेकिन एक इंटरैक्टिव मोड का उपयोग कर एक समाधान है।

2 यहाँ समस्याएँ। जब तक आप ईटीओ जैसे कोड / फ़ाइल के अंतिम संकेत को इंगित करने के लिए CTRL Z कमांड निष्पादित नहीं कर लेते, तब तक आप परिणाम नहीं देख सकते। जब आप करते हैं, तो अधिकांश मामलों में परिणाम मुद्रित परिणाम और तेजी से बंद खिड़की होता है। वैसे भी, आप cmd नहीं -a इंटरैक्टिव मोड में लौट आएंगे।

इस सामग्री को एक .bat फ़ाइल में सहेजें, और अपने PHP पथ को विंडोज़ चर में परिभाषित करें, या इसके बजाय "exe को पूर्ण पथ" के लिए php.exe संशोधित करें:

::
:: PHP Shell launch wrapper
::
@ECHO off
call "php.exe" -a

echo.
echo.

call "PHP Shell.bat"

यह php.exe का एक साधारण बैच लॉन्चिंग -a मोड है। जब यह php लॉन्च करता है, तो स्क्रिप्ट को रोकें यहां तक ​​कि कोई ठहराव नहीं लिखा जाता है क्योंकि इनपुट के लिए "इन" इंटरएक्टिव प्रतीक्षा है। जब आप CTRL Z से टकराते हैं, तो SIGSTEP मिलता है (अगला चरण) SIGSTOP नहीं (पास, CTRL + C आमतौर पर), तो अगला निर्देश पढ़ें, जो कि .bat के लिए एक पुनरावर्ती कॉल है। क्योंकि आप हमेशा PHP -a मोड में होते हैं, कोई निकास आदेश नहीं। आपको CTRL + C का उपयोग करना चाहिए या माउस से एग्जिट क्रॉस को हिट करना चाहिए। (कोई alt + f4)

आप आसान उपयोग के लिए "बैट टू एक्स" कनवर्टर का भी उपयोग कर सकते हैं।


1

अगर आपको अपने पुराने php संस्करण की आवश्यकता नहीं है, तो बस ये चरण करें:

  • ओपन वैम्प और गो से ज्यादा वैम्प मैनेजर पर राइट क्लिक करें: टूल्स / चेंज PHP CLI वर्जन चेंज से php वर्जन
  • किसी अन्य समय राइट पर जाने की अपेक्षा वैंप मैनेजर पर क्लिक करें: टूल / एक्सटर्नल वर्जन को डिलीट करें और सबसे पुराने वर्जन को डिलीट करें, जिस पर आपका सिस्टम जोर देकर कहता है कि आपका पीसी php वर्जन है: D
  • नियंत्रण कक्ष / उपयोगकर्ता खाते पर जाएं और मेरे पर्यावरण चर को बदलें और पथ चर में संपादित करें और अपना नवीनतम php संस्करण पथ जोड़ें जो आपके wamp सर्वर बिन फ़ोल्डर में है
  • सभी कमांड लाइन या आईडीई बंद करें और उन्हें पुनः आरंभ करें और php -v के लिए जांचें

यह अच्छा काम करता है


0

ऐसा इसलिए है क्योंकि आप 'इंटरएक्टिव मोड' में हैं जहां php आपके द्वारा टाइप की गई हर चीज का मूल्यांकन करता है। अंतिम परिणाम देखने के लिए, आप 'ctrl + z' करें और एंटर करें। अब आपको मूल्यांकित परिणाम देखना चाहिए :)

ps प्रशासक के रूप में cmd ​​चलाते हैं!


0

निम्नलिखित समाधान विशेष रूप से नम वातावरण के लिए है:

इसने मुझे थोड़ी देर के लिए रोक दिया, अन्य सभी सुझावों की कोशिश की, $ PATH आदि ने खिड़कियों की रजिस्ट्री की भी खोज की, जो सुराग ढूंढ रहे थे:

GUI (wampmanager) इंगित करता है कि मेरे पास संस्करण 7 चयनित है और हाँ यदि मैं ब्राउज़र में एक पृष्ठ में phpinfo () करता हूं तो यह मुझे इसका संस्करण 7.xx बताएगा लेकिन कमांड प्रॉम्प्ट में php -v 5.xx की रिपोर्ट करता है

यदि आप आइकन पर wampmanager हेड पर राइट क्लिक करते हैं-> टूल्स-> अप्रयुक्त संस्करणों को हटा दें और पुराने संस्करण को हटा दें, तो इसे सेवाओं को फिर से शुरू करने दें फिर कमांड प्रॉम्प्ट 7.xx लौटाएगा

इस समाधान का मतलब है कि आपके पास अब पुराना संस्करण नहीं है यदि आप php संस्करणों के बीच स्विच करना चाहते हैं, लेकिन C: \ wamp64 \ wampmanager.conf में एक कॉन्फ़िगरेशन फ़ाइल है जो CLI के साथ संस्करण का उपयोग करने के लिए निर्दिष्ट करने के लिए प्रकट होता है (पैरामीटर को phpCliVersion कहा जाता है) । मैंने इसे बदल दिया, सर्वर को फिर से शुरू किया ... सोचा कि मैंने इसे हल कर लिया है लेकिन कोई प्रभाव नहीं है शायद मैं थोड़ा अधीर था इसलिए मुझे लग रहा है कि इसमें कुछ लाभ हो सकता है।

आशा है कि किसी की मदद करता है


1
पुराने संस्करण के रूप में आप इसे PHP के संस्करण है कि WAMPServer के सभी आंतरिक लिपियों के खिलाफ परीक्षण किया जाता है। यदि आप PHP5.xx को हटाते हैं तो इसका मतलब है कि आप इन लिपियों के काम न करने का जोखिम उठाते हैं!
रिग्सफॉली

-1

विंडोज़ में, अपनी php.exe फ़ाइल को विंडोज़ / सिस्टम 32 या किसी अन्य सिस्टम के निष्पादन योग्य फ़ोल्डरों में डालें और फिर कमांड लाइन पर जाएँ और php टाइप करें और इसके बाद हिट करें, अगर यह कोई त्रुटि उत्पन्न नहीं करता है तो आप कमांड लाइन पर PHP का उपयोग करने के लिए तैयार हैं। । यदि आपने अपने php.exe को डिफ़ॉल्ट सिस्टम फ़ोल्डरों की तुलना में कहीं और सेट किया है, तो आपको पर्यावरण चर में इसका मार्ग निर्धारित करने की आवश्यकता है! आप निम्नलिखित मार्ग में वहाँ पहुँच सकते हैं ...।

नियंत्रण कक्ष -> प्रणाली -> अपने खाते के पर्यावरण चर को संपादित करें -> पर्यावरण चर -> पथ -> फिर अपने php.exe के निरपेक्ष पथ को वहां सेट करें और पहले पैराग्राफ में उसी प्रक्रिया का पालन करें, यदि त्रुटि में कुछ भी नहीं है। विभाग, तो आप कमांड लाइन से php का उपयोग करने के लिए तैयार हैं!


WAMPServer का उपयोग करते समय कभी भी PATH पर PHP न डालें। WAMPServer में PHP के कई सारे वर्जन लगाए जा सकते हैं। पीटीएच में एक संस्करण डालने का मतलब है कि आप संस्करणों के बीच स्विच नहीं कर सकते।
रिग्सफॉली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.