iT邦幫忙

0

php exec()

想請問在Server端想使用php exec()但是都沒有反應路徑也確定沒錯,伺服器使用xampp,有查過修改php.ini但是仍然沒反應,想問大家有沒有其他方法跟建議?

看更多先前的討論...收起先前的討論...
Franky Chen iT邦研究生 3 級 ‧ 2020-07-07 17:57:19 檢舉
code勒?
player iT邦大師 1 級 ‧ 2020-07-07 18:44:33 檢舉
Server是你的? 還是租的虛擬主機?
如果是後者的話
主機商通常會在php.ini用disable_functions 把一堆功能鎖起來
基於安全,不讓你的php去執行外部程式
KYCPG iT邦新手 4 級 ‧ 2020-07-08 01:10:00 檢舉
最近的心得付錢租了主機只是房客,乖乖照房東的規管走。想練習還很多限制。
kekeke iT邦新手 4 級 ‧ 2020-07-08 09:38:30 檢舉
exec('C:\Windows\System32\mspaint.exe'); call小畫家也無反應
print_r出來是空,server是自己的,
if(function_exists('exec')) {
echo "exec is enabled";
},我用這個卻說可以使用.....但執行自身的exe卻無反應
所以照player大 可能是本身就尚無開啟服務嗎?
最好你開小畫家會有回應值啦。
kekeke iT邦新手 4 級 ‧ 2020-07-08 10:08:19 檢舉
原來阿xd

1 個回答

1
㊣浩瀚星空㊣
iT邦超人 1 級 ‧ 2020-07-07 18:08:19
最佳解答

先查查phpinfo,有無支援exec。
現在大多預設不支援。

因為你沒有程式碼。不清楚你是如何使用exec。
正常要獲得結果的話。需要

<?php
exec(“/bin/ls -l”, $res, $rc);
print_r($rc);
?>
看更多先前的回應...收起先前的回應...
kekeke iT邦新手 4 級 ‧ 2020-07-08 09:39:48 檢舉

if(function_exists('exec')) {
echo "exec is enabled";
},路上查到是說Server本身會鎖exec這類的語法,但我用這個查卻可以顯示可以使用,但執行自身的Exe卻沒有反應

windows的話,先用

exec(“dir”, $res, $rc);

試試能否正常

不要直接去開視窗程式等不會有回應值的東西。

另外還得要注意權限的問題。

kekeke iT邦新手 4 級 ‧ 2020-07-08 10:07:53 檢舉

執行不正常開cmd不都行,想請問我在phpinfo應該看哪個欄,權限該怎麼查

開cmd???
你到底想幹啥??

先看看 $res 有沒有回應值好了。
$rc只是在接收你開啟的應用回應值。

再來就是你所謂執行自身的exe沒有反應。一般大多是權限的問題。
依windows來說的話。正常是你要讓exe能讓 NEWTWORK USER 身份下運行。
不過這是跑在iis下的情況。跑在xampp下是否等同這樣處理我就不太清楚。理論上因該是這樣才對。

不過我是建議你啦。不要用exec去開你後端的任何應用啦。
會掛的喔!!

kekeke iT邦新手 4 級 ‧ 2020-07-08 10:53:41 檢舉

cmd也是單純測是而已啦xd~
主要還是開自身的exe為準~因為工作需求~
但想執行exe的話還有其他方法嗎

你就先照我說的,先用dir這些不需要權限的指令試試exec能否正常後。
確定exec沒問題的情況下,再開始試exe。

如出現無權限的情況下。再去調整該exe的身份權限就好。

以前我用iis的話。可以很清楚了解iis的身份是 NEWTWORK USER
跟一個iis啥的。
所以我只要指定好這兩組身份就行了。

不過xampp我沒試過它是在什麼身份。
其實要試也很簡單。你用php去建立一支目錄或檔案。
再去查看他的所屬身份就行了。

kekeke iT邦新手 4 級 ‧ 2020-07-08 14:18:47 檢舉

看起來不太正常 exec(“dir”, $res, $rc);沒有反應/images/emoticon/emoticon02.gif
我有查過權限 我都全開了

$res, $rc這兩個值都沒拿到東西?
試試如下的方式看一下回應

if(function_exists('exec')) {
 echo"exec is enabled\n";
 if(exec('echo EXEC') == 'EXEC'){
    echo 'exec works';
 }
}else{
  echo 'ERROR EXEC!!';
}

再用如下檢查

$disabled = explode(',', ini_get('disable_functions'));
print_r($disabled);
kekeke iT邦新手 4 級 ‧ 2020-07-08 15:05:53 檢舉

1.exec is enabled exec works 使用第一個有回應我有用這個測過~
2.但用第2個方法會顯示Array ( [0] => ),php.ini disable_functions= 我檢查過是空白的

那代表你的exec沒被禁用。理論上可以用才對。
那的確只剩下權限的問題要處理了。

kekeke iT邦新手 4 級 ‧ 2020-07-08 16:40:31 檢舉

好~謝謝浩瀚星空~非常感恩~/images/emoticon/emoticon02.gif
權限的問題要修改xampp 的http.conf,還是php.ini

正常我不會去改變xampp本身的身份。
基本上在windows上,在不確定的情況下。
我會先寫個建立目錄或檔案。
或是你直接用個 echo "test" > test.txt 喂給exec試試能不能建立檔案。能的話就直接檢查該檔案的身份是誰。

再將對應的exe給與權限。

要注意一件事,在windows下,有些目錄本身是有被限制身份的。
建議將你要跑的exe先放到對應的web 路徑下運行會比較不容易碰上權限問題。

我自已很少在windows系統上跑。

kekeke iT邦新手 4 級 ‧ 2020-07-08 17:31:17 檢舉

了解~謝謝我再去試試~/images/emoticon/emoticon41.gif

kekeke iT邦新手 4 級 ‧ 2020-07-09 14:52:53 檢舉

浩瀚星空 echo "test" > test.txt 喂給exec測試後無法建立,我也將txt的權限全開了還是無法 請問是哪裡的權限沒開到嗎 exec('C:\xampp\htdocs\test.txt');

TXT權限全開???
不存在的檔案你要怎麼開權限。

我開始擔心你是否誤會了什麼了。

kekeke iT邦新手 4 級 ‧ 2020-07-09 15:11:14 檢舉

/images/emoticon/emoticon06.gif我好像誤會是先建立好 去呼叫他了......哈哈哈哈xd
echo "test" > test.txt 喂給exec 可以建立xd
浩瀚星空 但是呼叫想執行的exe檔還是沒有反應

我要發表回答

立即登入回答