我在终端中使用命令php -a
进入PHP的交互式shell,但没有命令正在运行。我甚至尝试了一个简单的2 * 2
,但我没有得到任何结果。
我做错了什么以及它是如何运作的?
答案 0 :(得分:16)
在the documentation for the interactive shell上,Ryan P.的第一个注释有一些值得注意的信息:
尽管名称和功能相似,但交互式Shell和交互模式并不是一回事。如果您键入
php -a
并获得“Interactive Shell”的响应,然后是php>
提示,则可以使用交互式shell(PHP已使用readline支持进行编译)。如果您得到“启用交互模式”的响应,则表示您没有可用的交互式shell,本文不适用于您。
因此,如果您只启用“交互模式”,那么您将只能输入PHP代码,然后在完成后,发送PHP EOF来执行它。
这可能不是你想要的。您可能希望改为phpsh。
答案 1 :(得分:14)
你所说的php -a
是一块垃圾。
phpsh是由facebook制作的。
安装git,转到你想要构建phpsh的地方:
sudo apt-get install git
cd /home/youruser;
拉出存储库,cd进入它并安装:
git clone https://github.com/facebook/phpsh
cd phpsh
sudo python setup.py install
运行它:
el@apollo:~$ phpsh
Starting php
type 'h' or 'help' to see instructions & features
php>
将小时分配到变量并打印:
php> $t = date("H");
php> echo $t;
04
每个人都喜欢陈述:
php> if (false){echo "derp"; } else if(true){ echo "foobar"; } else{echo "moo"; }
foobar
获取字符串的长度:
php> echo strlen("012345678");
9
排序:
php> $numbers=array(4,6,2,22,11);
php> sort($numbers);
php> echo $numbers;
Array
php> print_r($numbers);
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 11
[4] => 22
)
按键排序:
php> $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
php> ksort($age);
php> print_r($age);
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)
将值推入堆栈并将其弹出。
php> $a[]="one"
php> $a[]="two"
php> print_r($a);
Array
(
[0] => one
[1] => two
)
php> echo array_pop($a);
two
php> echo array_pop($a);
one
php> echo array_pop($a);
php>
Basename获取右侧的单词:
php> echo basename("http://foobar/helicase");
helicase
php> echo basename("/home/el/polymerase");
polymerase
触摸文件并获取最后修改时间:
php> touch("/home/el/myfile.txt");
php> echo filemtime("/home/el/myfile.txt");
1386494608
爱我一些json:
php> $myjson = '{"a":1}';
php> var_dump(json_decode($myjson));
object(stdClass)#2 (1) {
["a"]=>
int(1)
}
从json中获取内容的几种方法:
php> $json = '{"foobar": 123}';
php> $obj = json_decode($json);
php> print $obj->foobar;
123
php> print $obj->{'foobar'};
123
功能,JSON验证器
php> function isJson($string) {
... json_decode($string);
... return (json_last_error() == JSON_ERROR_NONE);
... }
php> echo isJson("");
1
php> echo isJson("{}");
1
php> echo isJson("abc");
php> echo isJson("{'a': 1}");
php> echo isJson('{"a": 1}');
1
答案 2 :(得分:3)
您是否使用--with-readline
汇编了PHP 5.1.0?
从PHP 5.1.0开始,CLI SAPI使用提供的交互式shell -a如果使用--with-readline选项编译PHP,则为选项。
PHP手册页中的示例:
$ php -a
交互式shell
php> echo 5 + 8;
13
更多信息:http://www.php.net/manual/en/features.commandline.interactive.php
答案 3 :(得分:0)
您使用的是print()还是echo()?您的2 * 2示例将会执行,但在您告诉PHP对输出(如print())执行某些操作之前,您将看不到任何证据。
php -a
php > 2 * 2; #This doesn't return anything.
php > print (2 * 2);
4
答案 4 :(得分:-1)
确保以分号结束每个命令。