मैं डेबियन व्हीज़ी पर प्रयोग करने योग्य इंटरैक्टिव प्रॉम्प्ट के साथ एक PHP सीएलआई कैसे स्थापित करूं?


10

जब मैं डेबियन व्हीज़ी (वर्तमान में परीक्षण) पर php5-cli स्थापित करता हूं, अनुपलब्ध रीडलाइन समर्थन (बग 341868 ) के कारण इंटरैक्टिव प्रॉम्प्ट बहुत ही अनुपयोगी है । Libreadline (usable line editing के लिए) से जुड़े वर्जन को इंस्टॉल करने का सबसे आसान तरीका क्या है?

जवाबों:


10

डॉटडेब डेबियन स्थिर पैकेज का उपयोग करें । हालाँकि प्रलेखन इस पर ध्यान नहीं देता है, स्थिर पैकेज वर्तमान में व्हीजी / परीक्षण के साथ ठीक काम करते हैं। निर्देशों का पालन करने के बाद, करें:

apt-get install php5-cli

जड़ के रूप में।


1
अब भी php>मेरे लिए कोई संकेत नहीं है :(
mulllhausen

6

Dotdeb से php5-cli स्थापित करने के बाद , php5-readline पैकेज स्थापित करें।

apt-get install php5-readline

(परीक्षण) यह जेसी में ही उपलब्ध है - packages.debian.org/...
विलियम Turrell

@williamt धन्यवाद, मेरा मानना ​​है कि यह डॉटडेब रिपॉजिटरी में है।
cmc

पैकेज php5-readlineजेसी और साइड के मुख्य संग्रह में उपलब्ध है। और आपको php5-cliडॉटडेब की आवश्यकता नहीं है ।
ओरतोमला लोकनी

4

गिल्स के उत्तर के अतिरिक्त, जो पूर्ण PHP पैकेज को फिर से शुरू करने का सुझाव देते हैं, आप PHP 5.4 का भी इंतजार कर सकते हैं। 5.4 में मैंने रीडलाइन की कार्यक्षमता को पुनर्गठित किया है कि सभी आवश्यक हिस्से रीडलाइन मॉड्यूल में हैं, इसलिए आप अकेले उस स्टैंड का निर्माण कर सकते हैं।

$ wget ...php-5.4.0.tar.bz2
$ tar xjf php-5.4.0.tar.bz2
$ cd php-5.4.0/ext/readline
$ phpize && ./configure && make

फिर आप इसे समाप्त कर देंगे, modules/readline.soजिसे php.ini से लोड किया जा सकता है ( make installइसे स्थानांतरित कर दिया जाएगा extension_dir)

वैकल्पिक रूप से वितरक रीडलाइन मॉड्यूल को शिप कर सकता है (हो सकता है कि लीबेडिट के खिलाफ लिंक किया गया हो, रीडलाइन नहीं) और इंटरेक्टिव मोड उपलब्ध होगा।

यह सब अब आपकी मदद नहीं करेगा (PHP 5.4 के रूप में, अभी तक बाहर नहीं है), लेकिन बाद में इस सवाल को खोजने में दूसरों की मदद कर सकता है।

मेरे ब्लॉग पर कुछ और विवरण: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html

संपादित करें: वास्तव में ब्लॉग पोस्ट इस परिवर्तन से पुरानी है, लेकिन फिर भी दिलचस्प हो सकती है। थोड़ी सी जानकारी बग रिपोर्ट में है # 53878 लेकिन ज्यादा भी नहीं ... रिलीज होने के बाद http://php.net/commandline.interactive को और अधिक होना चाहिए।


धन्यवाद, इससे मदद मिली। हालांकि, Ubuntu पर 2 समस्या का सामना करना पड़ा। लापता लिबिडिट लाइब्रेरी थी (लिबेदिट-देव को स्थापित करके तय की गई थी) और यह संकलन बग के आधार पर था: bugs.php.net/bug.php?id=62612 सॉल्यूशन भी है।
Dziamid

अजीब बात है कि मैं खुद का विरोध कैसे करता हूं! यहाँ मैं सुझाव देता हूं कि बग आदि में phpize आदि का कहना है कि मैं ऐसा करने के लिए "पूरी तरह से" समर्थित नहीं हूं ;-)
johannes

3

स्थापित करें rlwrapऔर चलाएं rlwrap php5। Rlwrap एक जेनेरिक रीडलाइन रैपर है, यह किसी भी रीड-इवल-प्रिंट लूप के लिए कमांड लाइन संस्करण और इतिहास प्रदान करता है। चूंकि यह एक सामान्य आवरण है, इसलिए आपको कोई भी PHP- विशिष्ट पूर्णता नहीं मिलेगी।

वैकल्पिक रूप से, स्रोत पैकेज प्राप्त करें और इसे रीडलाइन समर्थन के साथ पुनर्निर्माण करें। ReadLine समर्थन केवल की वजह से बाहर छोड़ दिया गया था लाइसेंस मुद्दों , लेकिन इन मुद्दों को केवल ReadLine के साथ जुड़ा हुआ PHP5 वितरण न करे, वे इसे का उपयोग करने से मना नहीं करते।

apt-get source php5-cli
apt-get install build-essential fakeroot
apt-get build-dep php5-cli
cd php5-*/
# Edit debian/rules to configure with readline support
# Add an entry to debian/changelog to remember what you did
dpkg-buildpackage -rfakeroot -us -uc -b -nc

rlwrapज्यादा मदद करने के लिए प्रतीत नहीं होता है। जब मैं दौड़ता हूं , तो rlwrap php5प्रवेश करता हूं echo 1;, फिर रिटर्न मारा जाता है फिर Ctrl-D (इनपुट का अंत), यह echo 1;परिणाम (1) के बजाय इनपुट को आउटपुट करता है । यह एक लाइसेंस मुद्दा है कि ध्यान देने के लिए धन्यवाद।
मैथ्यू फ्लैशेन

3
@ मैथ्यू: मुझे पीएचपी के बारे में कुछ पता नहीं है, लेकिन मैं इसे लेनी की कोशिश कर रहा हूं, मुझे पूर्व अनुमति कमांड लाइन संस्करण के अलावा rlwrap php5और बस के बीच कोई अंतर नहीं दिखता है php5। यदि आप दर्ज करते हैं <?php echo 1;?>, तो आउटपुट है 1, लेकिन यह किसी भी मामले में तुरंत उत्सर्जित नहीं होता है। Googling बताता है कि php5बस एक PHP REPL नहीं है, और आपको इसके बजाय phpsh जैसी किसी चीज़ का उपयोग करना चाहिए ।
गिल्स एसओ- बुराई को रोकना '

1
आप इंटरेक्टिव शेल में <?php या ?>में प्रवेश नहीं करते हैं । मैं मानता हूं कि php के पास पूर्ण REPL नहीं है। लेकिन काम कर रहे रीडलाइन सपोर्ट के साथ संकलित एक संस्करण का उपयोग करके (उदाहरण के लिए मैंने जो लिंक लिंक किया था), यह 1 (या जो भी वास्तविक आउटपुट है) आउटपुट के तुरंत बाद आपको दबाएगा। मैं मानता हूं कि rlwrap और कोई रीडलाइन के बीच कोई महत्वपूर्ण अंतर नहीं है (लाइन-संपादन और इतिहास के अलावा, जो अच्छे हैं लेकिन तत्काल आउटपुट के रूप में उपयोगी नहीं हैं)।
मैथ्यू फ्लैशेन

@ मैथ्यू: आह, तो रीडलाइन का समर्थन रीडलाइन के साथ लिंक से अधिक है, यह कार्यक्रम के व्यवहार को भी बदलता है? यह अजीब लगता है। तब आप स्रोत से पुनर्निर्माण कर सकते हैं, या यदि वे आपके लिए काम करते हैं तो dotdeb संकुल का उपयोग कर सकते हैं।
गिल्स एसओ- बुराई को रोकना '

हाँ, PHP में बहुत सी चीजें अजीब लगती हैं। ;) लेकिन ऐसा लगता है कि इस क्षेत्र में रीडलाइन कोड पथ अलग है केवल रीडलाइन से संबंधित है।
मैथ्यू फ्लेशेन

3

इसे इस्तेमाल करे:

$ php -a
Interactive mode enabled

<?php echo "hi!"; ?>

Ctrl-d दबाएं


5
यह प्रतीत नहीं होता है यह स्थापित करने पीएचपी से कोई लेना देना नहीं है की तरह
माइकल Mrozek

1
यह वास्तव में बहुत मददगार है, भले ही यह सीधे सवाल का जवाब नहीं देता है। यह दिखाता है कि नॉन- ट्रेडलाइन पथ में, PHP केवल <?php ?>ब्लॉक के अंदर PHP कोड निष्पादित करता है । मुझे उस बारे में पता नहीं था, और यह दिखाता है कि मैंने पहले गिल्स को गलत समझा था।
मैथ्यू फ्लैशेन

3

उबंटू उपयोगकर्ताओं के लिए, php5-readline एक अतिरिक्त पैकेज है जिसे आपको एक प्रयोग करने योग्य php कमांड प्रॉम्प्ट स्थापित करने की आवश्यकता है:

sudo apt-get install php5-cli php5-readline
sudo php5enmod readline

मुझे यह अपने उबंटू 14.04 पर करना था।



1

डेबियन जेसी में और डेबियन सिड उपयोग में:

sudo apt-get install php5 php5-readline

फिर

php -a
Interactive mode enabled

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