1. 程式人生 > >php呼叫shell指令碼(web端和客戶端同時實現)

php呼叫shell指令碼(web端和客戶端同時實現)

想這個問題有一段時間了,一開始想實現的功能是在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>


三:執行例項

我就直接給圖片了,第一張是程式碼,第二張那個亂碼檔名就是我成功上傳的檔案。

          
      

相關推薦

php呼叫shell指令碼web客戶同時實現

想這個問題有一段時間了,一開始想實現的功能是在web端點選一個按鈕,然後liunx主機採集影象,在瀏覽器上顯示。於是自然而然的想到了php呼叫shell指令碼。查了很多資料。實現了。 下面開始講解。本

沉浸式的封裝狀態列底部導航同時實現

我在使用沉浸式的時候遇到很多坑,最典型的就是相容性問題,有的效果5.0以上很容易實現,但在4.4使用同樣的方法就不可取了,有的機型底部有虛擬導航按鈕,有的卻沒有,所有我們不僅要區分手機的版本,也要區分底部是否有導航欄。只有在4.4及以上才有沉浸式這麼一說的

Java遠端呼叫shell指令碼專案實戰

前言        Java遠端呼叫shell指令碼,需要用到SSH建立連結(類似於xshell連線linux),然後再根據合法的引數進行shell指令碼呼叫 1 首先,從業務層開始,我這裡實現重傳指令碼的業務,程式碼如下.       //重傳     public

使用php呼叫shell指令碼同步檔案

當你在上傳檔案的時候需要同步到另外機器的時候,可以執行shell指令碼實現檔案同步 #! /bin/bash a=$1 b=$2 ip=$3 port=$4 passwd=$5 /bin/rpm

解決有關flask-socketio中服務客戶回調函數callback參數的問題全網最全

分享圖片 ready 發現 ted doc 客戶端 event return 建立 由於工作當中需要用的flask_socketio,所以自己學習了一下如何使用,查閱了有關文檔,當看到回調函數callback的時候,發現文檔裏都描述的不太清楚,最後終於琢磨出來了,分享給有

系統延時命令at命令,crontab命令,ftp服務服務客戶檔案的上傳下載[匿名使用者,本地使用者,虛擬使用者]

1.系統延遲任務 # at  命令發起的指令都是一次性的 at (+)time  ##指定命令執行的時間 at  -l  ##檢視當前任務 ad -d 3 #取消還未執行的任務(3:at -l 所看到的任務號) atrm 4 #

從零開始學Socket:連線服務客戶

先了解一下執行緒問題,在Main函式裡就是主執行緒他能處理程式碼,而new Thread就是新開一個執行緒,他和主執行緒互不干預,但是主執行緒完了,他也完了。他完了,主執行緒沒事。   在上篇部落格裡,我們已經建立好了伺服器端和客戶端,但是他們倆還沒有聯絡,要把他們聯絡起來,就

從零開始學Socket:服務客戶建立

上篇我提到Socket是TCP/IP的抽象介面。所以我們直接使用就好,沒必要知其甚解。 1.開啟VS 新建專案 名稱,位置隨意 這裡名稱是Server 框架選.NET 4.5(在這篇部落格裡也無所謂) 注意引用 using System.Net; using

webservice學習筆記(六):使用CXF開發web service的服務客戶以及WebService請求深入分析

1.使用CXF開發web service -加入cxf的jar包即可,其他不需要改動   a.建立一個java專案,把之前的jdk開發webservice服務端的程式碼複製進去,把cxf的jar複製到lib下面並build path, 注意cxf的lib下有一個不是j

Qt:Qt實現Winsock網路程式設計—TCP服務客戶通訊多執行緒

Qt實現Winsock網路程式設計—TCP服務端和客戶端通訊(多執行緒) 前言 感覺Winsock網路程式設計的api其實和Linux下網路程式設計的api非常像,其實和其他程式語言的網路程式設計都差不太多。博主用Qt實現的,當然不想用黑視窗唄,有介面可以看到,由於GUI程式設計

java socket網路程式設計例項程式碼含服務客戶

本程式碼為java socket網路程式設計例項程式碼,包括客戶端和服務端,實現客戶端傳送訊息,服務端接收並反饋訊息。 server.java為服務端程式碼。 client.java為客戶端程式碼。 服務端程式碼server.java: package socket;

從零開始學Socket:服務客戶簡單通訊

連線上服務端和客戶端之後,我們就要讓他們互動起來了。(到了現在,大家如果對下面程式碼不懂得地方可以去F12跟蹤至原始碼介面檢視,學習就是這樣) 先在服務端編寫傳送函式和接收函式 /// <summary> /// 傳送資料到客戶

libevent簡單介紹以及使用帶有伺服器客戶

這兩天使用了下libevent,只使用了網路IO事件(EV_READ和 EV_WRITE),查閱了下libevent的介面文件,這裡做點筆記,並附上程式碼,開發環境是win7+vs2010 這裡只介紹需要用到的libevent的介面函式,更多介面函式請檢視libevent官方文件 如果想了解

JSON:伺服器客戶的JSON處理

    上面介紹瞭如何用 JSON表示資料,接下來,我們還要解決如何在伺服器端生成 JSON 格式的資料以便傳送到客戶端,以及客戶端如何使用 JavaScript 處理 JSON 格式的資料。     先來看看伺服器如何輸出JSON格式的資料吧。     以 Java 為例,我們將演示將一個Java 物件編

編寫webservice服務客戶例項1

1、首先建立介面 @WebService public interface IMyService { //@WebResult(name="addResult")public Integer add(Integer num1,Integer num2);//@WebPara

MFC——socket程式設計淺出+深度:服務客戶埠問題

要寫網路程式就必須用Socket,這是程式設計師都知道的。而且,面試的時候,我們也會問對方會不會Socket程式設計?一般來說,很多人都會說,Socket程式設計基本就是listen,accept以及send,write等幾個基本的操作。是的,就跟常見的檔案操作一樣,只要寫過就一定知道。 對於網路程式設計,

php編寫TCP服務客戶程式

1、修改php.ini,開啟extension=php_sockets.dll 2、服務端程式SocketServer.php <?php //確保在連線客戶端時不會超時 set_time_limit(0); //設定IP和埠號 $address =

webservice快速入門-使用JAX-WS註解的方式快速搭建ws服務客戶

WEBSERVICE快速入門的示例: 首先定義介面: package com.whaty.platform.ws.server; import javax.jws.WebService; /** * @className:IMyservice.java * @De

php socket服務客戶例項

server.php <?php //確保在連線客戶端時不會超時 set_time_limit(0); $ip = '127.0.0.1'; $port = 56565; /*  +--

Socket系列基於Socket網路通訊的服務客戶程式設計

        Socket系列一主要介紹了Socket的基礎知識、工作原理以及與傳統的http協議的區別。這部分內容的目的是為本文做鋪墊。本文將介紹基於Socket網路通訊的伺服器端和客戶端的程式設計。 一、伺服器端的程式設計         關於Socket伺服器端的