我试图在 php 解释器中执行简单的 php 代码。当我执行命令时,php -a
我收到消息
启用交互模式
没有任何地方供php输入。但我可以通过命令执行 php 代码php -r
。例如:
php -r "echo 'Hello stackoverflow!';"
你好堆栈溢出!
我试图在 php 解释器中执行简单的 php 代码。当我执行命令时,php -a
我收到消息
启用交互模式
没有任何地方供php输入。但我可以通过命令执行 php 代码php -r
。例如:
php -r "echo 'Hello stackoverflow!';"
你好堆栈溢出!
安装这个:
php5-readline
然后尝试使用:
php -a
键入php -m
并确保您有 readline 模块。如果你不这样做,你将无法使用它。
http://www.php.net/manual/en/features.commandline.interactive.php
从 PHP 5.1.0 开始,如果 PHP 使用--with-readline选项编译,CLI SAPI 使用-a选项提供交互式 shell 。
您的 PHP 和 libreadline 之间似乎存在编译/链接错误。这记录在PHP Bug #48759中。
make clean
您是否使用过 --configure 并且在最终构建之前没有做适当的事情?php -m
将 readline 列为启用的功能?(PHP 是用 option 构建的--with-readline
)在我厌倦了在每台机器上编译它之后,我使用了 PHPSH(正如 joey-adams 所提到的)
它比 php -a 好得多(语法突出显示和自动完成)
安装 python phpsh
看看install-php5-with-readline-support-on-debian-wheezy
$ sudo apt-get install python # this is necessary to run phpsh
$ cd ~/
$ wget https://github.com/facebook/phpsh/zipball/master
$ unzip phpsh-master.zip
$ cd phpsh-master
$ sudo cp -r src /etc/phpsh # phpsh seems to complain unless it resides at /etc/phpsh
$ sudo ln -s /etc/phpsh/phpsh /usr/bin/phpsh # put phpsh on the $PATH
您处于交互模式,但没有提示,因为您可能没有可用的 readline 模式。您只需要开始输入,您的命令将在您按下回车后进行评估。看起来并没有发生任何事情,但是如果您输入,例如:
<?php
echo "hello world";
?>
...你会得到输出...
如果您输入支撑块,它们会在您在关闭后按 Enter 后进行评估}
<?php
for ($i = 0; $i < 5; $i++) {
echo $i;
}
// prints 12345 after closing }
请注意,您必须开始,<?php
否则输入的任何内容都不会被评估。
在运行供应商的安全补丁 PHP 5.3.3 的 Red Hat (RHEL5) 系统上,我遇到了一种交互模式,它在右大括号后没有回显。
相反,直到我按下输出缓冲区才被刷新Ctrld。实际上,这使得交互式会话一次性使用。插入所有代码输入,并Ctrld一次返回所有输出。
要检查您是否安装了 readline 模块,请键入:php -m | grep readline
如果没有显示,安装 readline 模块:sudo apt-get install php5-readline
安装模块后,您可以使用先前的命令重新检查它的存在,而不是使用以下命令进入交互模式:php -a
因为模块readline没有安装。 http://php.net/manual/en/features.commandline.interactive.php
这是我通过重新编译 php 源代码来安装模块的方式:
查找之前的配置命令:
$ php -i | grep configure
Configure Command => './configure' '--prefix=/usr/local/php7' ...
然后重新编译:
./configure --prefix=/usr/local/php7 \
--with-readline \
...
$ make clean
$ make
$ make test
$ sudo make install
检查是否安装了readline模块:
$ php m | grep readline
readline
然后启动 php 交互 shell:
$ php -a
Interactive shell
php >
如果您使用的是 Mac,请安装 Homebrew ( http://brew.sh ),然后键入: brew install phpsh
然后你可以运行 phpsh 来获得一个交互式的 shell。
这是你应该看到的:
# php -a
Interactive shell
php > echo 1+1;
2
php > echo PHP_VERSION;
5.3.2-1ubuntu4.14
php > exit
#