想請問在Server端想使用php exec()但是都沒有反應路徑也確定沒錯,伺服器使用xampp,有查過修改php.ini但是仍然沒反應,想問大家有沒有其他方法跟建議?
先查查phpinfo,有無支援exec。
現在大多預設不支援。
因為你沒有程式碼。不清楚你是如何使用exec。
正常要獲得結果的話。需要
<?php
exec(“/bin/ls -l”, $res, $rc);
print_r($rc);
?>
if(function_exists('exec')) {
echo "exec is enabled";
},路上查到是說Server本身會鎖exec這類的語法,但我用這個查卻可以顯示可以使用,但執行自身的Exe卻沒有反應
windows的話,先用
exec(“dir”, $res, $rc);
試試能否正常
不要直接去開視窗程式等不會有回應值的東西。
另外還得要注意權限的問題。
執行不正常開cmd不都行,想請問我在phpinfo應該看哪個欄,權限該怎麼查
開cmd???
你到底想幹啥??
先看看 $res 有沒有回應值好了。
$rc只是在接收你開啟的應用回應值。
再來就是你所謂執行自身的exe沒有反應。一般大多是權限的問題。
依windows來說的話。正常是你要讓exe能讓 NEWTWORK USER 身份下運行。
不過這是跑在iis下的情況。跑在xampp下是否等同這樣處理我就不太清楚。理論上因該是這樣才對。
不過我是建議你啦。不要用exec去開你後端的任何應用啦。
會掛的喔!!
cmd也是單純測是而已啦xd~
主要還是開自身的exe為準~因為工作需求~
但想執行exe的話還有其他方法嗎
你就先照我說的,先用dir這些不需要權限的指令試試exec能否正常後。
確定exec沒問題的情況下,再開始試exe。
如出現無權限的情況下。再去調整該exe的身份權限就好。
以前我用iis的話。可以很清楚了解iis的身份是 NEWTWORK USER
跟一個iis啥的。
所以我只要指定好這兩組身份就行了。
不過xampp我沒試過它是在什麼身份。
其實要試也很簡單。你用php去建立一支目錄或檔案。
再去查看他的所屬身份就行了。
看起來不太正常 exec(“dir”, $res, $rc);沒有反應
我有查過權限 我都全開了
$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);
1.exec is enabled exec works 使用第一個有回應我有用這個測過~
2.但用第2個方法會顯示Array ( [0] => ),php.ini disable_functions= 我檢查過是空白的
那代表你的exec沒被禁用。理論上可以用才對。
那的確只剩下權限的問題要處理了。
好~謝謝浩瀚星空~非常感恩~
權限的問題要修改xampp 的http.conf,還是php.ini
正常我不會去改變xampp本身的身份。
基本上在windows上,在不確定的情況下。
我會先寫個建立目錄或檔案。
或是你直接用個 echo "test" > test.txt 喂給exec試試能不能建立檔案。能的話就直接檢查該檔案的身份是誰。
再將對應的exe給與權限。
要注意一件事,在windows下,有些目錄本身是有被限制身份的。
建議將你要跑的exe先放到對應的web 路徑下運行會比較不容易碰上權限問題。
我自已很少在windows系統上跑。
了解~謝謝我再去試試~