我试图在PHP解释器中执行简单的PHP代码。 当我执行命令php -a
我得到的消息
交互模式启用
没有任何地方的PHPinput。 但是我可以通过命令php -r
执行一个php代码。 例如:
php -r "echo 'Hello stackoverflow!';"
你好,stackoverflow!
安装这个:
php5-readline
然后尝试使用:
php -a
键入php -m
并确保你有readline模块。 如果你不这样做,你将无法使用它。
http://www.php.net/manual/en/features.commandline.interactive.php
从PHP 5.1.0起,如果使用–with-readline选项编译PHP,CLI SAPI将使用-a选项提供交互式shell。
PHP和libreadline之间似乎存在编译/链接错误。 这在PHP Bug#48759中有记录 。
make clean
之前,你最终的构建? php -m
列表readline是否启用了功能? (PHP是用选项--with-readline
构建的) 当我厌倦了在每台机器上编译我使用PHPSH(正如joey-adams所提到的)
这是好得多然后php -a(语法高亮和自动完成)
安装python phpsh
看看install-php5-read-line-support-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"; ?>
…你会得到输出…
如果你输入花括号,在你按下输入后,他们会被评估}
<?php for ($i = 0; $i < 5; $i++) { echo $i; } // prints 12345 after closing }
请注意,您必须以<?php
开头,否则任何输入的内容都不会被评估。
在运行供应商的安全补丁PHP 5.3.3的Red Hat(RHEL5)系统上,我遇到了一个交互模式,在右花括号之后没有回显。
相反,输出缓冲区没有被刷新,直到我按下Ctrl d 。 有效地,这使交互式会话一次性使用。 插入所有代码输入,并按Ctrl d一次返回所有输出。
要检查是否安装了readline模块,请输入: php -m | grep readline
php -m | grep readline
如果没有显示,请安装readline模块: sudo apt-get install php5-readline
在模块安装之后,您可以使用先前的命令重新检查它的存在,比如使用php -a
进入交互模式
如果您使用Mac,请安装Homebrew( http://brew.sh ),然后输入:brew install phpsh
然后你可以运行phpsh来获得一个交互式的shell。
由于模块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 >
这是你应该看到的:
# php -a Interactive shell php > echo 1+1; 2 php > echo PHP_VERSION; 5.3.2-1ubuntu4.14 php > exit #