您的位置:首页 > 运维架构 > Shell

php调用shell脚本(web端和客户端同时实现)

2015-11-06 20:45 615 查看
想这个问题有一段时间了,一开始想实现的功能是在web端点击一个按钮,然后liunx主机采集图像,在浏览器上显示。于是自然而然的想到了php调用shell脚本。查了很多资料。实现了。

下面开始讲解。本例子将实现点击链接,调用shell脚本(ps,我写的脚本是一个上传文件到ftp服务器的命令)

一:配置

查看php.ini中配置是否打开安全模式,主要是以下三个地方

safe_mode = (这个如果为off下面两个就不用管了)

disable_functions =

safe_mode_exec_dir=

ps1:博主按照上面的步骤配置,后来执行时还有问题。

我们再次查看php.ini文件,找到disable_functions =scandir,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen

这些都是被禁用的函数,我们接下来会用到passthru函数,所以把passthru删掉,然后保存,重启服务

ps2: 后来又出问题了,因为一开始在centos上web端执行shell是没有问题的,可是到了ubuntu却执行不了,但是fswebcam软件在ubuntu上才有,于是最后通过一个灵活的途径执行了一条采集图像命令,而没有通过shell。后面代码会写到。

二:代码

到了愉快的代码环节,

首先我们把shell脚本写了,我简单写了个脚本。各位自己随便写一个吧,如果想知道我写的脚本,请参考shell实现ftp命令,或者去访问这个香蕉派摄像头监控

然后及时php代码了。

这是centos上的

<?php
passthru('/usr/local/bin/ftp.sh',$returnvalue);
if ($returnvalue != 0){
//we have a problem!
echo "wrong";
//add error code here
}else{
//we are okay
echo "ok";
//redirect to some other page
}
?>
然后在浏览器或者linux主机上运行php即可,(实现点击调用php,自己写一个html即可)

这是ubuntu上的

$a='sudo fswebcam -d/dev/video0 -r 320x240 /home/wwwroot/default/lot/1.jpg
';
system($a); //是这么执行的</font>


三:运行实例

我就直接给图片了,第一张是代码,第二张那个乱码文件名就是我成功上传的文件。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: