Debian Wheezy에서 사용 가능한 대화식 프롬프트로 PHP CLI를 설치하려면 어떻게합니까?


10

Debian Wheezy (현재 테스트 중)에 php5-cli를 설치하면 readline 지원이 누락되어 대화 형 프롬프트를 사용할 수 없습니다 (버그 341868 ). libreadline에 링크 된 버전을 사용하는 가장 쉬운 방법은 무엇입니까 (사용 가능한 라인 편집을 위해)?

답변:


10

Dotdeb 데비안 안정적인 패키지를 사용하십시오 . 문서에이 내용이 언급되어 있지 않지만 현재 안정적인 패키지는 Wheezy / testing에서 잘 작동합니다. 지시 사항을 따른 후 다음을 수행하십시오.

apt-get install php5-cli

루트로.


1
nup은 여전히 php>나를 위해 프롬프트가 없습니다 :(
mulllhausen

6

dotdeb 에서 php5-cli를 설치 한 후 php5-readline 패키지를 설치하십시오.

apt-get install php5-readline

이것은 Jessie (테스팅)에서만 가능합니다 – packages.debian.org/…
William Turrell

@ williamt 감사합니다, 나는 그것이 dotdeb 저장소에 있다고 생각합니다.
cmc

패키지 php5-readline는 jessie 및 sid의 기본 아카이브에서 사용 가능합니다. 그리고 당신은 php5-clifrom dotdeb 가 필요하지 않습니다 .
Ortomala Lokni

4

완전한 PHP 패키지 재 컴파일을 제안하는 Gilles의 답변 외에도 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.sophp.ini에서로드 할 수있는 a로 끝납니다 ( make install이동합니다 extension_dir)

대안으로 배포자는 readline 모듈 (readline이 아닌 libedit에 링크 될 수 있음)을 배송 할 수 있으며 대화식 모드를 사용할 수 있습니다.

이 모든 것이 현재 당신을 도울 수는 없지만 (PHP 5.4가 아직 나오지 않았으므로) 나중에이 질문을 찾는 데 도움이 될 수 있습니다.

내 블로그에 대한 자세한 내용 : http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html

편집 : 실제로 블로그 게시물은이 변경보다 오래되었지만 여전히 재미있을 수 있습니다. 버그 리포트 # 53878 에 약간의 정보가 있지만 릴리스 후 http://php.net/commandline.interactive에 더 많은 정보가 있어야합니다.


고마워요. 그러나 우분투에서 2 가지 문제가 발생했습니다. libedit 라이브러리가 누락되었으며 (libedit-dev를 설치하여 수정 됨)이 컴파일 버그가 발생했습니다. bugs.php.net/bug.php?id=62612 해결책도 있습니다.
Dziamid

내가 모순되는 방법이 재미있다! 여기에 나는 그것이 "완전히"지원되지 않는다고 말하는 버그에서 phpize 등을 제안한다 ;-)
johannes

3

설치 rlwrap하고 실행하십시오 rlwrap php5. Rlwrap은 일반적인 readline 래퍼이며, 모든 read-eval-print 루프에 대한 명령 줄 버전 및 기록을 제공합니다. 그것은 일반적인 래퍼이기 때문에 PHP에 따른 완성을 얻지 못할 것입니다.

또는 소스 패키지를 가져 와서 readline 지원으로 다시 빌드하십시오. 라이센스 문제 로 인해 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하면 enter를 입력 echo 1;한 다음 return 키를 누른 다음 Ctrl-D (입력 끝) echo 1;를 누르면 결과 대신 입력이 출력 됩니다 (1). 라이센스 문제라는 점에 유의 해 주셔서 감사합니다.
Matthew Flaschen

3
@Matthew : 나는 PHP에 대해 아무것도 몰라,하지만 레니에서이 작업을 시도하고, 나는 사이의 차이를 볼 rlwrap php5그냥 php5이전 수 있도록 명령 줄 에디션 이외. 을 입력 <?php echo 1;?>하면 출력은 1이지만 두 경우 모두 즉시 방출되지 않습니다. 인터넷 검색은 php5단순히 PHP REPL이 아니며 phpsh 와 같은 것을 사용해야한다고 제안 합니다.
Gilles 'SO- 악한 중지'

1
<?php 또는 ?>대화식 쉘에 입력하지 마십시오 . PHP에 완전한 REPL이 없다는 것에 동의합니다. 그러나 작동하는 readline 지원으로 컴파일 된 버전 (예 : 링크 된 dotdeb 패키지)을 사용하면 enter를 누르면 즉시 1 (또는 실제 출력이 무엇이든)이 출력됩니다. 나는 rlwrap과 readline 사이에 큰 차이가 없다는 것에 동의합니다 (라인 편집 및 히스토리 외에도 훌륭하지만 즉각적인 출력만큼 ​​유용하지는 않습니다).
Matthew Flaschen

@Matthew : 아, readline 지원은 readline과 연결하는 것 이상으로 프로그램의 동작을 변경합니까? 이상해 보인다. 그런 다음 소스에서 다시 빌드하거나 작동하는 경우 dotdeb 패키지를 사용할 수 있습니다.
Gilles 'SO- 악마 중지'

예, PHP의 많은 것들이 이상하게 보입니다. ;) 그러나 readline 코드 경로는이 영역에서 readline과 접선으로 만 다른 것처럼 보입니다.
Matthew Flaschen

3

이 시도:

$ php -a
Interactive mode enabled

<?php echo "hi!"; ?>

Ctrl-d를 누르십시오


5
PHP 설치와 관련이없는 것 같습니다
Michael Mrozek

1
질문에 직접 대답하지 않더라도 실제로는 매우 유용합니다. 그것은에서 것을 보여준다 -readline 경로 PHP 만 내부 PHP 코드 실행 <?php ?>블록. 나는 그것을 알지 못했고, 그것은 내가 Gilles를 일찍 오해했음을 보여줍니다.
Matthew Flaschen

3

Ubuntu 사용자의 경우 php5-readline은 사용 가능한 php 명령 프롬프트를 갖기 위해 설치해야하는 추가 패키지입니다.

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

우분투 14.04 에서이 작업을 수행해야했습니다.



1

데비안 제시와 데비안 sid에서 :

sudo apt-get install php5 php5-readline

그때

php -a
Interactive mode enabled

php > echo 1+2;
3
php >
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.