如何在linux上在linux命令行执行java显示出来执行php文件

在Linux命令行中使用和执行PHP代码(一)
PHP是一个开源服务器端脚本语言,最初这三个字母代表的是&Personal Home Page&,而现在则代表的是&PHP:Hypertext Preprocessor&,它是个递归首字母缩写。它是一个跨平台脚本语言,深受C、C++和Java的影响。
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。
Interactive shell
php & echo 2+3;
php & echo 9-6;
php & echo 5*4;
php & echo 12/3;
php & echo 12/5;
php & echo 2+3-1;
php & echo 2+3-1*3;
输入 &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交互模式。
创建一个函数,将它命名为 addition。同时,声明两个变量 $a 和 $b。
php &function addition ($a, $b)
使用花括号来在其间为该函数定义规则。
定义规则。这里,该规则讲的是添加这两个变量。
php { echo $a + $b;
所有规则定义完毕,通过闭合花括号来封装规则。
测试函数,添加数字4和3,命令如下:
php & var_dump (addition(4,3));
你可以运行以下代码来执行该函数,你可以测试不同的值,你想来多少次都行。将里头的 a 和 b 替换成你自己的值。
php & var_dump (addition(a,b));
php & var_dump (addition(9,3.3));
创建PHP函数
你可以一直运行该函数,直至退出交互模式(ctrl+z)。同时,你也应该注意到了,上面输出结果中返回的数据类型为 NULL。这个问题可以通过要求 php 交互 shell用 return 代码echo 返回结果来修复。
只需要在上面的函数的中 &echo& 声明用 &return& 来替换
php { echo $a + $b;
php {return $a + $b;
剩下的东西和原理仍然一样。
这里是一个样例,在该样例的输出结果中返回了正确的数据类型。
永远都记住,用户定义的函数不会从一个shell会话保留到下一个shell会话,因此,一旦你退出交互shell,它就会丢失了。
希望你喜欢此次教程。保持连线,你会获得更多此类文章。保持关注,保持健康。请在下面的评论中为我们提供有价值的反馈。点赞并分享,帮助我们扩散。
还请阅读:12个Linux终端中有用的的PHP命令行用法&&第二部分:/execute-php-codes-functions-in-linux-commandline/
Red Hat Linux定时执行PHP文件:
PHP 7.0升级备注:
------分隔线----------------------------PHP执行Linux命令实现文件压缩 -Php常用代码-Php教程-壹聚教程网PHP执行Linux命令实现文件压缩
在php中可以直接调用linux中的文件压缩命令来实现文件快速压缩与解压缩,有需要的朋友可参考参考。
用PHP调用Linux的命令行 ,执行压缩命令,OK,马上行动!
/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt& 全部放到 Exl_file 目录下*/
$outputs=array();
/*用php的exec执行Linux命令&& 括号里的字符串就是你在Linux命令窗口里敲的命令;
&& 第二个参数是& linux执行该命令后返回的结果数组;
&& linux执行返回的每一条结果依次存入该数组
&& 第三个参数是结果,如果执行成功,则Linux返回结果值为0,如果执行失败,则结果值不为0
exec(&zip ./Exl_file/wow.zip ./Exl_file/wow_1.txt ./Exl_file/wow_2.txt ./Exl_file/wow_3.txt&,$outputs,$rc);
if($rc!=0){
&&& foreach ($outputs as $ko=&$vo){
&&&&&&& echo &$vo&br/&&;
&&& $zipfile='./Exl_file/wow.zip';
&&& //文件下载& 输出后删除相关文件
你可以把& if($rc!=0)& 改成& if(1==1)& 查看Linux执行命令返回的结果行,如下图:
adding: Exl_file/wow_1.txt (deflated 96%)
adding: Exl_file/wow_2.txt (deflated 97%)
adding: Exl_file/wow_3.txt (deflated 97%)&
&& 可以看到执行返回的信息全部输入到了 $outputs 数组中,*.zip文件生成成功
php提供了system(),exec(),passthru()这几个函数来调用外部的命令.
他们的区别 :
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码
一个php调用zip实现方法,这个在windows中的
&#upload.php
&&& &table border='0' &
&&& &form ENCTYPE=&multipart/form-data& action=&upsave.php& method=&post&&
&&& &td&如果是*.ZIP的文件会被自动解压缩&br&
&&& &INPUT NAME=&MyFile& TYPE=&File& size=&50&&
&&& &td colspan='2' align=&center&&
&&& &input type=&Submit& value=& 上传 & class=iwhite&
&&& &input type=&reset& value=& 重填 & class=iwhite&
&&& &/table&
&&& &/body&
&&& &/html&
&&& //upsave.php
&&& //保存上传的文件
&&& $filename=&$MyFile_name&;
&&& copy($MyFile,&$filename&);
&&& unlink($MyFile);
&&& //判断是否是ZIP文件
&&& $expand_name=explode(&.&,$filename);
&&& if($expand_name[1] == &zip& or $expand_name[1] == &ZIP&)
&&& $str=&pkunzip.exe -e $filename &;
&&& exec($str);
&&& unlink($filename);
上一页: &&&&&下一页:相关内容6381人阅读
Linux命令(8)
参考手册:
可执行文件
&&& 所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件。这个可执行文件可以被用来运行命令行的PHP程序。
&&& 要在你的系统上找到这个可执行文件,就要遵照下面的步骤:
&&&&&&& 在Windows操作系统里,它被放在PHP主安装目录下,文件名是php.exe或者(在老版本的PHP里)是php-cli.exe。
&&&&&&& 在Linux操作系统里,它被保存在PHP安装目录的bin/子目录下。
&&& 不论是在哪一个操作系统里,你都需要对它进行测试,以保证它能够正常运行,方法是用-v参数调用它:
shell& /path/to/php -v
PHP 5.0.0 (cli) (built: Jun 1 :10)
Copyright (c)
The PHP Group
Zend Engine v2.0.0, Copyright (c)
Zend Technologies
它应该会返回PHP的版本号。
一个简单的PHP CLI程序
&&& 一旦找到了这个CLI可执行文件,你就可以用一个简单的程序来使用一下。创建一个简单的文本文件,其中包含有以下PHP代码,并把它保存为hello.php:
echo &Hello from the CLI&;
&&& 现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:
shell& /path/to/phphello.php
Hello from the CLI
使用标准的输入和输出
&&& PHP CLI会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易。这些常量见表格A。
表格A
标准的输入设备
标准的输出设备
标准的错误设备
&&& 你可以在自己的PHP脚本里使用这三个常量,以接受用户的输入,或者显示处理和计算的结果。要更好地理解这一点,可以看看下面的脚本(列表A):
// ask for input
fwrite(STDOUT, &Enter your name: &);
// get input
$name = trim(fgets(STDIN));
// write input back
fwrite(STDOUT, &Hello, $name!&);
Look what happens when you run it:
shell& /path/to/phphello.php
Enter your name: Joe
Hello, Joe!
&&& 在这个脚本里,fwrite()函数首先会向标准的输出设备写一条消息,询问用户的姓名。然后它会把从标准输入设备获得的用户输入信息读取到一个PHP变量里,并它把合并成为一个字符串。然后就用fwrite()把这个字符串打印输出到标准的输出设备上。
使用命令行自变量
&&& 在命令行里输入程序参数来更改其运行方式是很常见的做法。你也可以对CLI程序这样做。PHP CLI带有两个特殊的变量,专门用来达到这个目的:一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;另一个是$argc变量,它用来保存$argv数组里元素的个数。
&&& 用PHP脚本编写一段读取$argv并处理它所含参数的代码是很简单的。试试列表B里的示例脚本,看看它是如何工作的:
print_r($argv);
Run this script by passing it some arbitrary values, and check the output:
shell& /path/to/phptest.php chocolate 276 &killer tie, dude!&
( [0] =& test.php
[1] =& chocolate
[2] =& 276
[3] =& killer tie, dude!
&&& 正如你可以从输出的结果看到的,传递给test.php的值会自动地作为数组元素出现在$argv里。要注意的是,$argvis的第一个自变量总是脚本自己的名称。
& 下面是一个更加复杂的例子(列表C):
// check for all required arguments
// first argument is always name of script!
if ($argc != 4) {
die(&Usage: book.php &check-in-date& &num-nights& &room-type& &);
// remove first argument
array_shift($argv);
// get and use remaining arguments
$checkin = $argv[0];
$nights = $argv[1];
$type = $argv[2];
echo &You have requested a $type room for $nights nights, checking in on $checkin. Thank you for your order! &;
&&& 下面是其用法的示例:
shell& /path/to/phpbook.php 21/05/2005 7 single
You have requested a single room for 7 nights, checking in on 21/05/2005. Thank you for your order!
&&& 在这里,脚本首先会检查$argc,以确保自变量的数量符合要求。它然后会从$argv里提取出每一个自变量,把它们打印输出到标准的输出设备上。
&&& 注意:你可以用 PEAR类向PHP增加更加复杂的命令行参数。
使用CLI参数
&&& 除了用命令行传递PHP脚本参数,你还可以传递PHP CLI参数以更改其工作方式。表格B就是一些重要参数的列表:
表格B
交互式运行Run interactively
path 从path读取php的.ini文件
不用读取php的.ini文件就直接运行
列出经过编译的模块
显示有关PHP构建的信息
检查PHP脚本的句法
以彩色方式显示源代码
显示去掉注释之后的源代码
&&& 你还可以以交互方式使用PHP CLI,也就是输入命令,马上获得结果。要得到这种效果,只需要使用一个参数调用CLI可执行文件就行了,就像下面这样:
shell& /path/to/php -a
&&& 你会看到一个空行,你可以在里面输入PHP代码。看看:
shell& /path/to/php -a
Interactive mode enabled
echo mktime();
echo 2+2;
&&& 或者,你可以不使用-a参数就调用CLI可执行文件,直接输入完整的脚本或者代码段。用&Ctrl&-D来结束代码段,并让CLI来执行它。见下面的例子:
shell& /path/to/php
echo date(&d-M-Y h:i:s&, time());
12-Jul-:04
这就是PHP的命令行,现在你应该已经对PHP CLI有了足够的了解,并开始使用它了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:618779次
积分:6915
积分:6915
排名:第2250名
原创:240篇
转载:125篇
评论:116条
(1)(1)(3)(4)(1)(1)(6)(11)(11)(15)(12)(33)(30)(2)(4)(41)(20)(10)(13)(2)(7)(2)(27)(6)(30)(1)(5)(24)(2)(3)(3)(9)(2)(1)(4)(16)(1)(1)--一步,二步,三步,N步,二行脚印
张映 发表于
分类目录:
一,为什么我们要在命令行下运行php脚本呢?
个人理解,主要有二个原因:
1,利用crontab去跑php,可以给服务器减压,当然在这里有一个条件,就是实时性要求不高。比如:sns中的好友动态,这个实时要求不高,但是数据量比较大,这个时候定时跑的话,会给web服务器,数据库服务器分担不小的压力。
2,就是我们要定时去完成某一事情,比如:我要删除一个月前,用户留言,这个时候,写的php脚本在crontab去执行,一天跑一次就行了。而不是手动去执行php程序。
二,命令行下执行带参数php,并取得参数
有一点很重要,就是命令行下执行php,是不走apache等这类东西的,没有什么http协议,所有get,post传参数根本不起作用,并且还会报错,如下:
zhangying@ubuntu:~$ php test.php?aaa=bbb
Could not open input file: test.php?aaa=bbb
一般情况下,不需要向定时跑的php脚本传参数,但有的时候,是要的。
1,test.php测试文件,很简单吧
print_r($argv);
echo "\n";
echo "\n";
2,命令行下调用
zhangying@ubuntu:~$ php test.php aaa ccc
[0] =& test.php
//参数0,文件本身
[1] =& aaa
[2] =& ccc
[3] =& bbbb
//$argc的值,参数的总数
这种传参的方式,根shell脚本真的很像,
zhangying@ubuntu:~$ sh c1.sh aaa bbb
我向c1.sh传了二个参数aaa bbb,shell会得到三个参数,$0为文件本身,$1为参数1,$2为参数2。不同的是,php得到的是以数组的形势,而shell不是。
转载请注明作者:海底苍鹰地址:}

我要回帖

更多关于 linux php命令行执行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信