iT邦幫忙

0

PHP 執行 EXE 檔

  • 分享至 

  • xImage
請問各位大神

PHP 要給 client 端呼叫EXE執行檔  但執行後都是Server 端開啟程式
想知道怎麼讓client 直接執行EXE檔


 程式碼如下:
<?php 
exec('start \\\192.168.333.333\it\採購看板程式V1.2\採購狀況查詢V1.2(看板For筆電)\PurchaseEKB.exe');
?>
froce iT邦大師 1 級 ‧ 2021-07-16 13:14:31 檢舉
透過網頁做不到你要的,結案。
WQ iT邦新手 2 級 ‧ 2021-07-22 15:48:22 檢舉
server? client?
EXEC <--在server端呼叫應用程式用的
想要呼叫client電腦的應用程式,您可參考這個網址https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/290542/
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
Hankz
iT邦新手 2 級 ‧ 2021-07-26 17:30:00
最佳解答

PHP是在Server端運作的程式語言
所以不會往PHP找答案
一開始方向就不對了
建議找時間了解Client-Server架構,可以節省以後解決問題的時間

之前使用URI Scheme的方式實作過,
就跟Teams、Webex開啟會議連結使用相同的開啟方式
Client電腦需要先註冊URL Protocol
呈現出來結果如下:
https://ithelp.ithome.com.tw/upload/images/20210726/20139878mZSFuPl7Kk.png

微軟文件:
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914(v=vs.85)?redirectedfrom=MSDN

懶人包(網路上找的,看起來沒什麼問題):
https://kmmr.pixnet.net/blog/post/34454099

tine0961 iT邦新手 5 級 ‧ 2021-08-06 16:54:29 檢舉

謝謝大大我就是不確定該往哪個方向思考所以才想先重這邊問起

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-07-16 12:07:39

php 在那一部電腦上執行
被 exec 的程式就在那一部電腦上執行

講完收工放飯
/images/emoticon/emoticon71.gif

tine0961 iT邦新手 5 級 ‧ 2021-07-16 13:05:37 檢舉

海綿大大
因為怕未來
版更的關係所以才考慮這種做法

tine0961 iT邦新手 5 級 ‧ 2021-07-16 13:08:53 檢舉

檔案也已經放在網路空間了

換個方式再說一次
不論被 exec 的程式放在什麼地方
他都只會/只能在執行 php 程式的同一部電腦執行

這是系統安全的問題
不是 php 的原因
也不是放在網路空間的原因

至於你想版更
就連微軟的 windows update
都做不到「從微軟辦公室裡執行你電腦裡的 windows update」
你寫的 php 怎麼可能做得到呢?

0
japhenchen
iT邦超人 1 級 ‧ 2021-07-16 12:26:32

我已經改用python來處理這類事情了

$res = trim(exec("./k.py '" . $p1 . "' '" . $p2 . "'"));

看更多先前的回應...收起先前的回應...

exe無法執行的問題很有可能是權限,還有長檔名,檔名或資料夾中間夾空白,還有,UNC前面是兩個反斜,不是三個

直接執行另一台電腦上的EXE可能會發生執行環境.NET framework版本不同的問題,所以要用EXE的話,請直接安裝在本機

tine0961 iT邦新手 5 級 ‧ 2021-07-16 13:04:41 檢舉

J大感謝回復 但是想要能夠讓exe 檔想要及時版更所以才想要這個功能

那也請先安裝在本機後再去執行另一台機器上的程式,力求執行環境相同

應用程式更新我用clickonce,可以程式自我更新,無人值守也可以
只是不知道你家的應用程式是否也是微軟VisualStudio所開發,如果不是,請自行編寫

https://docs.microsoft.com/zh-tw/visualstudio/deployment/how-to-check-for-application-updates-programmatically-using-the-clickonce-deployment-api?view=vs-2019

0
Homura
iT邦高手 1 級 ‧ 2021-07-16 17:14:26

直接呼叫Client端當然不行/images/emoticon/emoticon10.gif
你能讓別人隨便進入你的電腦呼叫你的執行檔嗎?

正確的作法應該是你的Client端也要部屬API
並開放給外部連接
讓你的PHP對Client端呼叫
讓Client端的PHP來執行呼叫

0

基本上除非你大開後門。
WEB SERVER開放ROOT跟全開執行能力。

要不然正規來說,不太可能可以讓Client來操作SERVER上的應用程式。
這是一件很笨的事。

但真的需要做這些事怎麼辦呢??
基本如我說的,需要將大多數的權限都打開了。

當然,做這樣的笨事。早晚會出事。所以大多數而言,都是會透過間接的處理方式居多。
我這邊則是會利用一下排程來運行命令處理。而命令的處理可以由WEB來給與

我要發表回答

立即登入回答