Как я устанавливаю CLI PHP с применимой интерактивной подсказкой на Хрипящем Debian?

Микроядро ограничивает время, система находится в привилегированном режиме, в противоположность пространству пользователя, к возможному абсолютному минимуму.

Если катастрофический отказ происходит в привилегированном режиме, все ядро понижается, и это означает, что вся система понижается. Если катастрофический отказ происходит в непривилегированном режиме, просто тот процесс понижается. Linux устойчив в этом отношении, но для любой подсистемы ядра все еще возможно переписать память любой другой подсистемы ядра, или целеустремленно или случайно.

Понятие микроядра помещает много материала, который является традиционно привилегированным режимом, таким как сети и драйверы устройств, в пространстве пользователя. Так как микроядро не действительно ответственно за много, который также означает, что это может быть более простым и более надежным. Думайте о способе, которым протокол IP, будучи простым и глупым, действительно приводит к устойчивым сетям путем продвижения сложности к краям и отъезда базового наклона и средний.

10
10.04.2011, 00:43
9 ответов

Используйте Dotdeb Debian стабильные пакеты. Хотя документация не отмечает это, стабильные пакеты в настоящее время хорошо работают с Хрипящим / тестированием. После следования инструкциям сделайте:

apt-get install php5-cli

как корень.

10
27.01.2020, 19:59
  • 1
    nup все еще нет php> подсказка для меня :( –  mulllhausen 12.10.2013, 11:57

Как дополнение к ответу Gilles, кто предлагает перекомпилировать полный пакет PHP, можно также ожидать PHP 5.4. В 5,4 я реструктурировал readline функциональность, что все необходимые части находятся в readline модуле, таким образом, можно создать это одинокое.

$ 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

Затем Вы закончите с a modules/readline.so который может быть загружен из php.ini (make install переместит его в extension_dir)

Кроме того, дистрибьютор может поставить readline модуль (возможно, связанный против libedit, не readline), и интерактивный режим будет доступен.

Это все не поможет Вам теперь (как PHP 5.4. не отсутствует, еще), но мог бы помочь другим, находящим этот вопрос позже.

Еще некоторые детали о моем блоге: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html

Править: На самом деле сообщение в блоге является более старым, чем это изменение, но могло бы все еще быть интересным. Немного информации находится в отчете об ошибках № 53878, но не очень любой... после выпуска, http://php.net/commandline.interactive должен иметь больше.

4
27.01.2020, 19:59
  • 1
    Спасибо, которое помогло. Встреченный 2 проблемы на Ubuntu, как бы то ни было. Пропускал libedit библиотеку (зафиксированный путем установки libedit-dev), и эта ошибка компиляции произошла: Решение bugs.php.net/bug.php?id=62612 там также. –  Dziamid 01.08.2012, 12:47
  • 2
    Забавный, как я противоречу мне! здесь я предлагаю phpize и т.д. в ошибке, я говорю, что это не "полностью" поддерживается, чтобы сделать так ;-) –  johannes 01.08.2012, 15:22

Установка rlwrap и выполненный rlwrap php5. Rlwrap является универсальной readline оберткой, он обеспечивает выпуск командной строки и историю для любого read-eval-print цикла. Так как это - универсальная обертка, Вы не получите PHP-определенного завершения.

С другой стороны, получите исходный пакет и восстановите его с поддержкой readline. Поддержка Readline была только не учтена из-за лицензирования проблем, но эти проблемы только запрещают распределению PHP5, связанный с readline, они не запрещают Вам использование его.

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
3
27.01.2020, 19:59
  • 1
    rlwrap кажется, не помогает многому. Когда я работаю rlwrap php5, войти echo 1;, затем возврат хита затем Ctrl-D (конец входа), это производит вход echo 1; вместо результата (1). Спасибо за замечание, что это - проблема лицензирования. –  Matthew Flaschen 10.04.2011, 00:05
  • 2
    @Matthew: Я ничего не знаю о PHP, но пробующий это на lenny, я не вижу различия между rlwrap php5 и просто php5, кроме бывшего выпуска командной строки разрешения. Если Вы входите <?php echo 1;?>, вывод 1, но это сразу не испущено ни в одном случае. Поиск с помощью Google предлагает это php5 просто не PHP REPL, и необходимо использовать что-то как phpsh вместо этого. –  Gilles 'SO- stop being evil' 10.04.2011, 00:42
  • 3
    Вы не входите <?php или ?> в интерактивной оболочке. Я соглашаюсь, что php не имеет полного REPL. Но с помощью версии, скомпилированной с с работой readline поддержка (например, dotdeb пакет я связался), он произведет 1 (или независимо от того, что реальный вывод), сразу после нажатия Enter. Я соглашаюсь, что нет никакой значительной разницы между rlwrap и никаким readline вообще (помимо редактирования строки и истории, которые хороши, но не так полезны как непосредственный вывод). –  Matthew Flaschen 10.04.2011, 00:49
  • 4
    @Matthew: А-ч, таким образом, поддержка readline действительно больше, чем просто связывается с readline, это также, изменяет поведение программы? Это кажется странным. Затем можно восстановить из источника или использовать dotdeb пакеты, если они работают на Вас. –  Gilles 'SO- stop being evil' 10.04.2011, 00:54
  • 5
    да, много вещей в PHP кажется странным.;) Но действительно похоже, что readline путь выполнения кода отличается в этой области, только мимоходом связанной с readline. –  Matthew Flaschen 10.04.2011, 01:00

Попробуйте это:

$ php -a
Interactive mode enabled

<?php echo "hi!"; ?>

Нажать Ctrl-d

3
27.01.2020, 19:59
  • 1
    Это не кажется, что имеет какое-либо отношение к установке PHP –  Michael Mrozek♦ 20.05.2011, 13:21
  • 2
    Это на самом деле очень полезно, даже при том, что это непосредственно не отвечает на вопрос. Это показывает, что в пути non-readline, PHP только выполняет код PHP внутри <?php ?> блоки. Я не знал об этом, и это показывает, что я неправильно понял Gilles ранее. –  Matthew Flaschen 24.05.2011, 21:39

Ни один из них не работал на меня. Используйте http://www.phpsh.org/ вместо этого.

1
27.01.2020, 19:59

После установки php5-cli от dotdeb, установите php5-readline пакет.

apt-get install php5-readline
6
27.01.2020, 19:59

Для пользователей Ubuntu php5-readline - это дополнительный пакет, который необходимо установить, чтобы иметь удобную командную строку php:

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

Мне пришлось сделать это на моем Ubuntu 14.04.

3
27.01.2020, 19:59

В Debian Jessie и в использовании Debian Sid:

sudo apt-get install php5 php5-readline

тогда

php -a
Interactive mode enabled

php > echo 1+2;
3
php >
1
27.01.2020, 19:59

Простоsudo apt install php7.2-cli

[lucas:~] 20s 130 % sudo apt install php7.2-cli
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libavdevice57
  libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgsasl7 libkyotocabinet16v5
  libmailutils5 libmemcached11 libntlm0 libwayland-egl1-mesa:i386
  libwayland-server0:i386 mailutils-common mysql-client-core-5.7 shim
  ttf-dejavu-core webhttrack-common
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  php-pear
The following NEW packages will be installed:
  php7.2-cli
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1.407 kB of archives.
After this operation, 4.956 kB of additional disk space will be used.
Get:1 http://br.archive.ubuntu.com/ubuntu bionic-updates/main amd64 php7.2-cli amd64 7.2.24-0ubuntu0.18.04.4 [1.407 kB]
Fetched 1.407 kB in 0s (6.666 kB/s)  
Selecting previously unselected package php7.2-cli.
(Reading database... 320578 files and directories currently installed.)
Preparing to unpack.../php7.2-cli_7.2.24-0ubuntu0.18.04.4_amd64.deb...
Unpacking php7.2-cli (7.2.24-0ubuntu0.18.04.4)...
Setting up php7.2-cli (7.2.24-0ubuntu0.18.04.4)...
update-alternatives: using /usr/bin/php7.2 to provide /usr/bin/php (php) in auto mode
update-alternatives: using /usr/bin/phar7.2 to provide /usr/bin/phar (phar) in auto mode
update-alternatives: using /usr/bin/phar.phar7.2 to provide /usr/bin/phar.phar (phar.phar) in auto mode
Processing triggers for man-db (2.8.3-2ubuntu0.1)...
[lucas:~] % php --version
PHP 7.2.24-0ubuntu0.18.04.4 (cli) (built: Apr  8 2020 15:45:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.4, Copyright (c) 1999-2018, by Zend Technologies
[lucas:~] % php -a
Interactive mode enabled

php > 

Конечно, это только PHP CLI. Это позволяет вам запускать Composer и все, что связано с CLI. Он не включает веб-сервер, такой как Apache или Nginx.

0
03.05.2020, 11:57

Теги

Похожие вопросы