在 Linux/windows下 命令行中使用和执行 PHP 代码[交互式php]
【注释】在ubuntu下,升级php到7.1版本,虽然提示的是Interactive mode enabled, 但实际上可以直接书写命令,和interactive shell效果一样。
一:windows下
首先配置环境变量,注意是把php.exe所在的文件夹(而不是二进制文件)放在环境变量中。然后可以cmd中就可以运行php命令了
如何使用PHP的交互式运行环境(Interactive shell) php -a
从PHP 5.1.0开始,CLI SAPI提供了一个交互式命令行工具(Interactive shell),这个交互式PHP shell是通过使用 –with-readline 编译选项集成到php内核里的。使用这个交互式shell,你可以直接在命令行窗口里输入PHP并直接获得输出结果。
开启PHP的交互式shell模式,需要使用 -a 参数。下面是使用交互式shell的一些例子。
$ php -a Interactive shell php > echo 5+8; 13 php > function addTwo($n) php > { php { return $n + 2; php { } php > var_dump(addtwo(2)); int(4) php >
在交互式shell里,你可以使用 tab 键对函数名,内置变量,类名,静态方法等进行自动补全操作。
需要注意的是,Interactive Shell 和 Interactive Mode 并不是一个东西,尽管名称和功能都很相似。
如果你输入 php -a ,得到的回应是 ‘Interactive Shell’ 并跟随着 ‘php>’ 提示符,那你使用的就是交互式shell。如果你得到的回应是 ‘Interactive mode enabled’ ,说明你的PHP并不支持交互式shell,上面介绍的用法也不实用于你。
但也不用担心,Interactive mode(交互模式)也可以在命令行窗口里执行PHP代码,只是代码的执行方式有些区别。在PHP交互模式(Interactive mode)里,你在命令行窗口里输入PHP代码,代码不会立即执行,当你输入了所有PHP代码后,输入 Ctrl-Z (windows里),或输入 Ctrl-D (linux里),你输入的所有代码将会一次执行完成并输出结果。
在PHP交互模式(Interactive mode)里,跟交互式shell里不一样,你的代码需要以 <?php 开头,跟你的普通PHP文件里的写法一致。下面是在Windows里的使用例子。
C:\>php -a Interactive mode enabled <?php echo "Hello, world!"; ?> ^Z Hello, world!
在Winidows里,没有交互式shell,只有Interactive mode。
PHP是一个开源服务器端脚本语言,最初这三个字母代表的是“Personal Home Page”,而现在则代表的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写。它是一个跨平台脚本语言,深受C、C++和Java的影响。
在 Linux 命令行中运行 PHP 代码
PHP的语法和C、Java以及带有一些PHP特性的Perl变成语言中的语法十分相似,它当下大约正被2.6亿个网站所使用,当前最新的稳定版本是PHP版本5.6.10。
PHP是HTML的嵌入脚本,它便于开发人员快速写出动态生成的页面。PHP主要用于服务器端(而Javascript则用于客户端)以通过HTTP生成动态网页,然而,当你知道可以在Linux终端中不需要网页浏览器来执行PHP时,你或许会大为惊讶。
本文将阐述PHP脚本语言的命令行方面。
1. 在安装完PHP和Apache2后,我们需要安装PHP命令行解释器。
# apt-get install php5-cli [Debian 及类似系统]
# yum install php-cli [CentOS 及类似系统]
接下来我们通常要做的是,在/var/www/html
(这是 Apache2 在大多数发行版中的工作目录)这个位置创建一个内容为 <?php phpinfo(); ?>
,名为 infophp.php
的文件来测试(PHP是否安装正确),执行以下命令即可。
# echo '<?php phpinfo(); ?>' > /var/www/html/infophp.php
然后,将浏览器访问 http://127.0.0.1/infophp.php ,这将会在网络浏览器中打开该文件。
检查PHP信息
不需要任何浏览器,在Linux终端中也可以获得相同的结果。在Linux命令行中执行/var/www/html/infophp.php
,如:
# php -f /var/www/html/infophp.php
从命令行检查PHP信息
由于输出结果太大,我们可以通过管道将上述输出结果输送给 less
命令,这样就可以一次输出一屏了,命令如下:
# php -f /var/www/html/infophp.php | less
检查所有PHP信息
这里,‘-f‘选项解析并执行命令后跟随的文件。
2. 我们可以直接在Linux命令行使用phpinfo()
这个十分有价值的调试工具而不需要从文件来调用,只需执行以下命令:
# php -r 'phpinfo();'
PHP调试工具
这里,‘-r‘ 选项会让PHP代码在Linux终端中不带<
和>
标记直接执行。
3. 以交互模式运行PHP并做一些数学运算。这里,‘-a‘ 选项用于以交互模式运行PHP。
# php -a
Interactive shell
php > echo 2+3;
5
php > echo 9-6;
3
php > echo 5*4;
20
php > echo 12/3;
4
php > echo 12/5;
2.4
php > echo 2+3-1;
4
php > echo 2+3-1*3;
2
php >exit
输入 ‘exit‘ 或者按下 ‘ctrl+c‘ 来关闭PHP交互模式。
启用PHP交互模式
4. 你可以仅仅将PHP脚本作为shell脚本来运行。首先,创建在你当前工作目录中创建一个PHP样例脚本。
# echo -e '#!/usr/bin/php\n<?php phpinfo(); ?>' > phpscript.php
注意,我们在该PHP脚本的第一行使用#!/usr/bin/php
,就像在shell脚本中那样(/bin/bash
)。第一行的#!/usr/bin/php
告诉Linux命令行用 PHP 解释器来解析该脚本文件。
其次,让该脚本可执行:
# chmod 755 phpscript.php
接着来运行它,
# ./phpscript.php
5. 你可以完全靠自己通过交互shell来创建简单函数,这你一定会被惊到了。下面是循序渐进的指南。
开启PHP交互模式。
# php -a
创建一个函数,将它命名为 addition
。同时,声明两个变量 $a
和 $b
。
php >function addition ($a, $b)
使用花括号来在其间为该函数定义规则。
php >{
定义规则。这里,该规则讲的是添加这两个变量。
php { echo $a + $b;
所有规则定义完毕,通过闭合花括号来封装规则。
php {}
测试函数,添加数字4和3,命令如下:
php > var_dump (addition(4,3));
样例输出
7NULL
你可以运行以下代码来执行该函数,你可以测试不同的值,你想来多少次都行。将里头的 a 和 b 替换成你自己的值。
php > var_dump (addition(a,b));
php > var_dump (addition(9,3.3));
样例输出
12.3NULL
创建PHP函数
你可以一直运行该函数,直至退出交互模式(ctrl+z)。同时,你也应该注意到了,上面输出结果中返回的数据类型为 NULL。这个问题可以通过要求 php 交互 shell用 return 代替 echo 返回结果来修复。
只需要在上面的函数的中 ‘echo‘ 声明用 ‘return‘ 来替换
替换
php { echo $a + $b;
为
php {return $a + $b;
剩下的东西和原理仍然一样。
这里是一个样例,在该样例的输出结果中返回了正确的数据类型。
PHP函数
永远都记住,用户定义的函数不会从一个shell会话保留到下一个shell会话,因此,一旦你退出交互shell,它就会丢失了。
希望你喜欢此次教程。保持连线,你会获得更多此类文章。保持关注,保持健康。请在下面的评论中为我们提供有价值的反馈。点赞并分享,帮助我们扩散。
PHP 7 ,你值得拥有 http://www.linuxidc.com/Linux/2015-06/118847.htm
在 CentOS 7.x / Fedora 21 上面体验 PHP 7.0 http://www.linuxidc.com/Linux/2015-05/117960.htm
CentOS 6.3 安装LNMP (PHP 5.4,MyySQL5.6) http://www.linuxidc.com/Linux/2013-04/82069.htm
在部署LNMP的时候遇到Nginx启动失败的2个问题 http://www.linuxidc.com/Linux/2013-03/81120.htm
Ubuntu安装Nginx php5-fpm MySQL(LNMP环境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm
《细说PHP》高清扫描PDF+光盘源码+全套教学视频 http://www.linuxidc.com/Linux/2014-03/97536.htm
CentOS 6中配置PHP的LNMP的开发环境 http://www.linuxidc.com/Linux/2013-12/93869.htm
还请阅读: 12个Linux终端中有用的的PHP命令行用法——第二部分
via: http://www.tecmint.com/run-php-codes-from-linux-commandline/
作者:Avishek Kumar 译者:GOLinux 校对:wxy
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120747.htm
【第二篇 高级用法】
本文旨在让你了解一些相当不错的Linux终端中的PHP交互性 shell 的用法特性。
让我们先在PHP 的交互shell中来对php.ini
设置进行一些配置吧。
6. 设置PHP命令行提示符
要设置PHP命令行提示,你需要在Linux终端中使用下面的php -a(启用PHP交互模式)命令开启一个PHP交互shell。
$ php -a
然后,设置任何东西(比如说Hi Tecmint ::)作为PHP交互shell的命令提示符,操作如下:
php >#cli.prompt=Hi Tecmint ::
启用PHP交互Shell
同时,你也可以设置当前时间作为你的命令行提示符,操作如下:
php >#cli.prompt=`echo date('H:m:s');` >
22:15:43>
7. 每次输出一屏
在我们上一篇文章中,我们已经在原始命令中通过管道在很多地方使用了less
命令。通过该操作,我们可以在那些不能一屏全部输出的地方获得分屏显示。但是,我们可以通过配置php.ini文件,设置pager的值为less以每次输出一屏,操作如下:
$ php -a
php >#cli.pager=less
限制PHP屏幕输出
这样,下次当你运行一个命令(比如说条调试器phpinfo();
)的时候,而该命令的输出内容又太过庞大而不能固定在一屏,它就会自动产生适合你当前屏幕的输出结果。
php > phpinfo();
PHP信息输出
8. 建议和TAB补全
PHP shell足够智能,它可以显示给你建议和进行TAB补全,你可以通过TAB键来使用该功能。如果对于你想要用TAB补全的字符串而言有多个选项,那么你需要使用两次TAB键来完成,其它情况则使用一次即可。
如果有超过一个的可能性,请使用两次TAB键。
php > ZIP [TAB][TAB]
如果只有一个可能性,只要使用一次TAB键。
php >#cli.pager [TAB]
你可以一直按TAB键来获得建议的补全,直到该值满足要求。所有的行为都将记录到~/.php-history
文件。
要检查你的PHP交互shell活动日志,你可以执行:
$ nano ~/.php_history | less
检查PHP交互Shell日志
9. 你可以在PHP交互shell中使用颜色,你所需要知道的仅仅是颜色代码。
使用echo来打印各种颜色的输出结果,类似这样:
php > echo "color_code1 TEXT second_color_code";
具体来说是:
php > echo "\033[0;31m Hi Tecmint \x1B[0m";
在PHP Shell中启用彩色
到目前为止,我们已经看到,按回车键意味着执行命令,然而PHP Shell中各个命令结尾的分号是必须的。
10. 在PHP shell中用basename()输出路径中最后一部分
PHP shell中的basename函数可以从给出的包含有到文件或目录路径的最后部分。
basename()样例#1和#2。
php > echo basename("/var/www/html/wp/wp-content/plugins");
php > echo basename("www.tecmint.com/contact-us.html");
上述两个样例将输出:
plugins
contact-us.html
在PHP中打印基本名称
11. 你可以使用PHP交互shell在你的桌面创建文件(比如说test1.txt),就像下面这么简单
php> touch("/home/avi/Desktop/test1.txt");
我们已经见识了PHP交互shell在数学运算中有多优秀,这里还有更多一些例子会令你吃惊。
12. 使用PHP交互shell打印比如像tecmint.com这样的字符串的长度
strlen函数用于获取指定字符串的长度。
php > echo strlen("tecmint.com");
在PHP中打印字符串长度
13. PHP交互shell可以对数组排序,是的,你没听错
声明变量a,并将其值设置为array(7,9,2,5,10)。
php > $a=array(7,9,2,5,10);
对数组中的数字进行排序。
php > sort($a);
以排序后的顺序打印数组中的数字,同时打印序号,第一个为[0]。
php > print_r($a);
Array
(
[0]=>2
[1]=>5
[2]=>7
[3]=>9
[4]=>10
)
在PHP中对数组排序
14. 在PHP交互Shell中获取π的值
php > echo pi();
3.1415926535898
15. 打印某个数比如32的平方根
php > echo sqrt(150);
12.247448713916
16. 从0-10的范围内挑选一个随机数
php > echo rand(0,10);
在PHP中获取随机数
17. 获取某个指定字符串的md5校验和sha1校验,例如,让我们在PHP Shell中检查某个字符串(比如说avi)的md5校验和sha1校验,并交叉校验bash shell生成的md5校验和sha1校验的结果。
php > echo md5(avi);
3fca379b3f0e322b7b7967bfcfb948ad
php > echo sha1(avi);
8f920f22884d6fea9df883843c4a8095a2e5ac6f
$ echo -n avi | md5sum
3fca379b3f0e322b7b7967bfcfb948ad-
$ echo -n avi | sha1sum
8f920f22884d6fea9df883843c4a8095a2e5ac6f-
在PHP中检查md5校验和sha1校验
这里只是PHP Shell中所能获取的功能和PHP Shell的交互特性的惊鸿一瞥,这些就是到现在为止我所讨论的一切。保持连线,在评论中为我们提供你有价值的反馈吧。为我们点赞并分享,帮助我们扩散哦。
PHP 7 ,你值得拥有 http://www.linuxidc.com/Linux/2015-06/118847.htm
在 CentOS 7.x / Fedora 21 上面体验 PHP 7.0 http://www.linuxidc.com/Linux/2015-05/117960.htm
CentOS 6.3 安装LNMP (PHP 5.4,MyySQL5.6) http://www.linuxidc.com/Linux/2013-04/82069.htm
在部署LNMP的时候遇到Nginx启动失败的2个问题 http://www.linuxidc.com/Linux/2013-03/81120.htm
Ubuntu安装Nginx php5-fpm MySQL(LNMP环境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm
《细说PHP》高清扫描PDF+光盘源码+全套教学视频 http://www.linuxidc.com/Linux/2014-03/97536.htm
CentOS 6中配置PHP的LNMP的开发环境 http://www.linuxidc.com/Linux/2013-12/93869.htm
via: http://www.tecmint.com/execute-php-codes-functions-in-linux-commandline/
作者:Avishek Kumar 译者:GOLinux 校对:wxy
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120784.htm
在 Linux/windows下 命令行中使用和执行 PHP 代码[交互式php]的更多相关文章
- 在 Linux 命令行中使用和执行 PHP 代码
PHP是一个开源服务器端脚本语言,最初这三个字母代表的是“Personal Home Page”,而现在则代表的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写.它是一 ...
- windows下命令行模式中cd命令无效的原因
当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢? 例如: 当我们想切换到 D:\MySql\mysql-5.7.19-winx64\bin ...
- 【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙
Linux系统下命令行连接蓝牙设备 2018年11月26日 10:47:27 Zz笑对一切 阅读数:741 1.打开系统蓝牙 sudo service bluetooth start 1 进入bl ...
- linux/mac下命令行rm回收站--rmtrash
Linux.mac的命令行下没有回收站功能,很多时候手一抖就把重要文件给 rm -fr * 了,虽然linux下有可能通过lost +found/debugfs找回,但难度也比较大,不能保证一定能够找 ...
- windows下命令行利器---Cmder(安装,中文乱码,配置右键菜单)
很多人都是在win下开发的,这样就会出现,经常需要命令行操作,而win cmd命令和linux命令有很大差异,导致大家很难受,今天给大家介绍一个win下命令行的利器-Cmder 一.先看一下它的容颜 ...
- windows 下命令行启动 appium-desktop
启动appium-desktop如果要启动appium-desktop,双击appium.exe,启动后如下图: 启动appium-server通过下面解决方案直接启动appium-server, ...
- 转:windows下命令行工具
转自: http://www.cnblogs.com/haochuang/p/5593411.html Windows下CMD不好用,远没有Linux,或者一些SSH工具用起来方便.其实Windows ...
- Mingw opencv Windows下命令行运行
1.下载opencv 2.3 http://sourceforge.net/projects/opencvlibrary/files/ 下个opencv-win版本吧 至于版本号就随意吧,我选的是2. ...
- windows下命令行cmder工具
windows下系统自带的命令行工具,实在是太丑了,输入命令后,有时排版乱七八糟,而且使用惯liunx系统的命令后,实在是不能够接受,这么蹩脚的工具:为此我给大家推荐一款实用的开源工具cmder 下载 ...
随机推荐
- mysql学习2:模糊匹配查询like,regexp,in
mysql模糊匹配查询like,regexp,in 摘要 内容比较简单,无摘要. 关键词 模糊查询 like regexp in contact 正文 下图是示例用到的数据表信息 ...
- centos下安装&&配置redis
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- C++ 智能指针shared_ptr的实现
#include <memory> #include <iostream> using namespace std; template<typename T> cl ...
- ATM取款机系统代码及此次作业感受
本次乃我们软件工程专业开学第一个小测试,本来以为是和之前2016级相同的或者类似得软件,所以之前学了好久的那个程序完全失去了它的作用,当然了老师也从来没有按套路出过牌,所以这个下马威我觉得作用起到了. ...
- equals与“==”的区别
对于值类型,“==”比较的是不是同一数值,equals先比较是不是同一类型,在比较是不是同一数值: 对于引用类型,“==”和equals比较的都是是否引用了同一实例对象
- 微信小程序基础架构
一个微信小程序界面由一个页面描述文件,一个页面逻辑文件,一个样式表文件来进行描述 在主目录中的三个以app开头的文件就是微信小程序的主描述文件 app.js :主逻辑文件,用来注册小程序 app.js ...
- SeekBar
<SeekBar android:id=”@+id/seek”android:layout_width=”match_parent”android:layout_height=”wrap_con ...
- xss测试用例
alert(1)// 'alert(1)// '>alert(1)// >alert(1)// "alert(1)// ">alert(1)// alert(1) ...
- vue slot插槽的使用方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- localstorage和vue结合使用2
html <template> <div class="hello"> <div class="page-top"> < ...