Shell(Bash) - PHP与Sheel交互
最近想使用PHP与Sheel进行交互。PHP控制显示和高层的逻辑结构。Sheel调用linux的底层命令来实现快速及其时效性。
在网翻了一些帖子,发现一份强帖..
由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面。于是PHP的设计者们给PHP加了一个门:安全模式。如果运行在安全模式下,那么PHP脚本中将受到如下四个方面的限制:
1.执行外部命令 2.在打开文件时有些限制 3.连接MySQL数据库 4.基于HTTP的认证
在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_exec_dir指令,或在编译PHP是加上--with-exec-dir选项来指定,默认是/usr/local/php /bin。
如果你调用一个应该可以输出结果的外部命令(意思是PHP脚本没有错误),得到的却是一片空白,那么很可能你的网管已经把PHP运行在安全模式下了。
如何做?
在PHP中调用外部命令,可以用如下三种方法来实现:
1) 用PHP提供的专门函数
PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。
system()
原型:string system (string command [, int return_var])
system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。
例子:
system("/usr/local/bin/webalizer/webalizer");
?>
exec()
原型:string exec (string command [, string array [, int return_var]])
exec() 函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。
例子:
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
#$res是一个数据,每个元素代表结果的一行
exec("/bin/ls -l", $res, $rc);
#$rc的值是命令/bin/ls -l的状态码。成功的情况下通常是0
?>
passthru()
原型:void passthru (string command [, int return_var])
passthru() 只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus(Unix 下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。
例子:
header("Content-type: image/gif");
passthru("./ppmtogif hunte.ppm");
?>
【转载 http://blog.chinaunix.net/u3/101502/showart_2020751.html】
Shell(Bash) - PHP与Sheel交互相关推荐
- linux超级基础系列——什么是shell? bash和shell有什么关系
什么是Shell? shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序.你在提示符下输入的每个命令都由shell先解释然后传给Linux内核. ...
- 国内Linux shell,Bash shell 的诞生 | Linux 中国
原标题:Bash shell 的诞生 | Linux 中国 本周的<代码英雄>播客深入研究了最广泛使用的.已经成为事实标准的脚本语言,它来自于自由软件基金会及其作者的早期灵感. -- Ma ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...
- awk,gawk调用shell,bash中的变量 笔记221106
awk,gawk调用shell,bash中的变量 笔记221106 "'${变量名}'" 双 包 单 包 ${} 包 变量名 "'"${变量名}"'& ...
- shell(bash)替换字符串大全
shell(bash)替换字符串大全 1. 替换(只替换一个) 用varrB=${varA/str1/str2} $ var="AAAszip_BBB.zip";var2=${va ...
- shell bash脚本_如何在Windows 10上创建和运行Bash Shell脚本
shell bash脚本 With the arrival of Windows 10's Bash shell, you can now create and run Bash shell scri ...
- 通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境)
通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境) 任务需求: 基本情况: 技能需求: 操作流程概括: 运行通过的shell脚本: 小结 任务需求: 对一批视频 ...
- shell/bash脚本命令教程
shell/bash其实就是我们日常在unix系统终端中执行的语句,只是通常我们在命令行中都是单行语句执行的,而有时,我们希望将一些操作命令写到一个文本中,让电脑自动按顺序或是并行地执行这些命令, ...
- 反弹shell bash -i命令
目录 0x01 什么是反弹shell? 0x02 命令拆分详解 0x03 文件描述符 0x04 shell 输入/输出重定向 0x05 输入输出结合获得shell 什么是反弹she ...
最新文章
- 关于asp.net mvc中的cookie的对象传递以及加密解密
- LeetCode Keyboard Row
- qt的输出中文,数字到表格
- 项目管理概述学习记录(二)
- cumsum在matlab中,matlab中cumsum函数和sum函数详解
- 苹果将放弃PowerPC支持 全面Intel化
- [NTU-Machine-learning-note]1 Introduction(2)
- SharePoint Portal Server 2003 SP2对文档库事件处理程序所带来的影响
- 好文章,被架构师秒杀之后
- 进程控制(二)与linux下的自有服务
- button按钮onclick触发不了_用一篇深度好文,详解按钮的设计
- 计算机控制系统报告,计算机控制系统实验报告一
- 商业虚拟专用网络技术二通用路由封装
- asin、acos、atan 和 atan2 函数用法简介
- Fiddler功能讲解
- 2018校招携程测评,赞RP
- spark算子详细介绍(v、k-v、vv类型)
- linux网卡断流测试,RouterOS断流解决办法探讨
- 数据中心机柜散热解决方案,知道这两点就够了!
- SpringBoot学习-part68 安全-登录认证授权