想这个问题有一段时间了,一开始想实现的功能是在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>
三:运行实例
我就直接给图片了,第一张是代码,第二张那个乱码文件名就是我成功上传的文件。
版权声明:本文为博主原创文章,未经博主允许不得转载。