PHP是一个开源服务器端脚本语言,最初这三个字母表明的是“Personal Home Page”,而如今则表明的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写。它是一个跨平台脚本语言,深受C、C++和Java的影响。php
在 Linux 命令行中运行 PHP 代码html
PHP的语法和C、Java以及带有一些PHP特性的Perl变成语言中的语法十分类似,它当下大约正被2.6亿个网站所使用,当前最新的稳定版本是PHP版本5.6.10。linux
PHP是HTML的嵌入脚本,它便于开发人员快速写出动态生成的页面。PHP主要用于服务器端(而Javascript则用于客户端)以经过HTTP生成动态网页,然而,当你知道能够在Linux终端中不须要网页浏览器来执行PHP时,你或许会大为惊讶。shell
本文将阐述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是否安装正确),执行如下命令便可。bash
# echo '<?php phpinfo(); ?>' > /var/www/html/infophp.php
而后,将浏览器访问 http://127.0.0.1/infophp.php ,这将会在网络浏览器中打开该文件。服务器
检查PHP信息网络
不须要任何浏览器,在Linux终端中也能够得到相同的结果。在Linux命令行中执行/var/www/html/infophp.php
,如:less
# 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,它就会丢失了。
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校验
http://www.tecmint.com/run-php-codes-from-linux-commandline/
http://www.tecmint.com/execute-php-codes-functions-in-linux-commandline/