你想问得是php如何执行shell命令把?\x0d\x0a\x0d\x0a可以用system(),exec(),passthru()这三个函数实现\x0d\x0a虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:\x0d\x0a system() 输出并返回最后一行shell结果。\x0d\x0a exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。\x0d\x0a passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。\x0d\x0a 相同点:都可以获得命令执行的状态码\x0d\x0a例子:system("ls -al");\x0d\x0a【使用之前要在php.ini中把safe_mode关闭】
10多年的吉州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整吉州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“吉州网站设计”,“吉州网站推广”以来,每个客户项目都认真落实执行。
首先先要给大家介绍PHP执行linux系统命令的几个基本函数 我曾经很长一段时间都分不清下面几个函数的具体用法区别 system函数 说明 执行外部程序并显示输出资料 语法 string system(string mand int [return_var]); 返回值: 字符串 详细介绍 本函数就像是 C 语中的函数 system() 用来执行指令 并输出结果 若是 return_var 参数存在 则执行 mand 之后的状态会填入 return_var 中 同样值得注意的是若需要处理用户输入的资料 而又要防止用户耍花招破解系统 则可以使用 EscapeShellCmd() 若 PHP 以模块式的执行 本函数会在每一行输出后自动更新 Web 服务器的输出缓冲暂存区 若需要完整的返回字符串 且不想经过不必要的其它中间的输出界面 可以使用 PassThru() 实例代码
?php $last_line = system( ls $retval); echo Last line of the output: $last_line; echo hr /Return value: $retval; ?
exec函数 说明 执行外部程序 语法 string exec(string mand string [array] int [return_var]); 返回值: 字符串 详细介绍 本函数执行输入 mand 的外部程序或外部指令 它的返回字符串只是外部程序执行后返回的最后一行 若需要完整的返回字符串 可以使用 PassThru() 这个函数 要是参数 array 存在 mand 会将 array 加到参数中执行 若不欲 array 被处理 可以在执行 exec() 之前呼叫 unset() 若是 return_var 跟 array 二个参数都存在 则执行 mand 之后的状态会填入 return_var 中 值得注意的是若需要处理使用者输入的资料 而又要防止使用者耍花招破解系统 则可以使用 EscapeShellCmd() 实例代码
?php echo exec( whoami ); ? ? $fp = popen( "/bin/ls" "r" ); ? lishixinzhi/Article/program/PHP/201311/21017
首先先要给大家介绍PHP执行linux系统命令的几个基本函数。
system函数
说明:执行外部程序并显示输出资料。
语法:string system(string command, int [return_var]);
返回值: 字符串
详细介绍:
本函数就像是 C 语中的函数 system(),用来执行指令,并输出结果。若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中。同样值得注意的是若需要处理用户输入的资料,而又要防止用户耍花招破解系统,则可以使用 EscapeShellCmd()。若 PHP 以模块式的执行,本函数会在每一行输出后自动更新 Web 服务器的输出缓冲暂存区。若需要完整的返回字符串,且不想经过不必要的其它中间的输出界面,可以使用 PassThru()。
实例代码:
?php
$last_line = system('ls', $retval);
echo 'Last line of the output: ' . $last_line;
echo 'hr/Return value: ' . $retval;
?
exec函数
说明:执行外部程序。
语法:string exec(string command, string [array], int [return_var]);
返回值: 字符串
详细介绍:
本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用 PassThru() 这个函数。
要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。
值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。
实例代码:
?php
echo exec('whoami');
?
popen函数
说明:打开文件。
语法:int popen(string command, string mode);
返回值: 整数
详细介绍:
本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。
实例代码:
?
$fp = popen( "/bin/ls", "r" );
?
通过上述函数,PHP可以执行linux系统的shell命令。
1、打开我们的linux命令行,准备好。
2、找到php的安装目录,主要是找到linux环境下,php可执行文件的目录。如图所示。笔者的目录为/opt/lampp/bin/php,将此目录记下,备用。
3、找到要运行的php文件所在的目录,随便写点php代码就可以,在此笔者已经准备好。/opt/lampp/htdocs/wechat/xjtest-web_browser/pcntl_test.php,将此目录记下,接下来就要正式开始运行了。
4、打开刚刚第一步打开的linux命令行,输入/opt/lampp/bin/php /opt/lampp/htdocs/wechat/xjtest-web_browser/pcntl_test.php(即依次输入刚刚的两个目录)注意两个目录中间有空格。
5、按下回车,可以看到,php文件已经正确执行了。
常见问题解答
1. 在windows下的软件可不可以正常的运行?
不可以,不过有一个软件叫 wine ,可以模拟运行一部分程序。他的衍生版本可以运行特定方面的软件。比如 cedega ,可以运行很多游戏,CS、WarCraft3 、wow 都能,但还是不够完美。比如 wow 里部分插件导致运行缓慢(我很郁闷的遇到了,只好进 win 玩魔兽,CS 用 OpenGL 基本完美。当然前提是你的显卡正确安装了驱动,打开了 3D 支持)。
2. 哪个杀毒软件支持linux?
Avast!,Mcafee,Kaspersky和ClamAV(自由软件,开源、免费)等。
暂时 linux 还不需要杀毒软件,病毒很少,主要是黑客攻击,注意设置就行了。 比如选择针对桌面设计的版本,来减少过多服务程序导致安全隐患。
3. 在Linux是不是可以听歌的啊?
可以。绝对可以,而且Linux下的软件很早就入侵Windows了。
ffmpeg 解码器库就是linux下的,Mplayer 也是linux 里的。(注意不是windows 里的那个韩国的KMPlayer ,Linux 里的KMPlayer是一个Mplayer的KDE界面程序)
4. QQ可不可以在Linux运行啊?
腾讯官方已发布QQ for Linux beta1(于2009年1月4日发布),但功能尚且比较简单,可以支持屏幕截图,语音聊天。目前不支持群管理,群空间等高级属性。已经可以支持红旗 linux桌面版6.0,对最新的suse linux 11.1的支持也非常好。其他的可以选择的开源解决方案还有eva,lumaQQ和pidgin。目前eva的功能较强大。(参见: )
5. linux下最强大的程序调试器是?
Totalview debugger是迄今为止最强大的可以运行在linux下的调试工具,它的图形化调试界面,强大的多线程、内存调试能力令众多同类调试工具都黯然失色!Totalview debugger可以让您彻底抛弃手敲命令的烦恼,让您的开发过程变得轻松便捷!