2014-10-05 93 views
3

這是我push.bat文件推混帳如何從PHP執行exec()

echo "Hello world!" 
cd abhishek3/ 
call git add . 
call git commit -m "sadf" 
call heroku accounts:set abhishek84 
call git push heroku master 

我能夠通過推到我的倉庫運行push.bat文件在cmd中

我想推到我的回購從PHP,嘗試下面的片段,但沒有人爲我工作。

exec("psexec -d push.bat"); 

結果:PHP頁面加載無限

$WshShell = new COM("WScript.Shell"); 
$oExec = $WshShell->Run("cmd /C abhishek3.bat, 0, false); 

結果:頁面停止加載後一段時間,並沒有什麼作品

exec("cmd.exe /c abhishek3.bat") 

結果:頁面停止加載過了一段時間,沒什麼摹作品

編輯: 嘗試下面的代碼片段,但毫無效果。

exec("hstart.exe /NOCONSOLE \"cmd.exe /c \"abhishek3.bat\"\""); 

上述代碼片段在從cmd運行時運行成功,但是通過exec()從php運行時無法運行。 Download hstart (Hidden Start Binary)

+0

正如你所說的「頁面加載」我假設你正在通過網絡服務器進行測試?你嘗試從PHP CLI?可能該網絡服務器與其他用戶一起運行,並停止它? – johannes 2014-10-05 12:33:39

+0

我正在從本地主機運行網絡服務器。當我運行php -r「$ ret = exec('abhishek3.bat'); echo $ ret;」從cmd它成功執行批處理文件。如果我從網頁運行它,它不會執行推送.. – Snehasish 2014-10-05 12:48:11

回答

1
  1. 檢查Web用戶的權限是正確的(它可以訪問文件和執行GIT)
  2. 檢查Git和可能需要的任何環境變量的路徑。您可能必須在腳本中設置這些環境變量並使用絕對路徑)
  3. 檢查IIS或apache(無論您使用哪種方式)都可以執行一般程序和bat文件(例如,如果它是apache,您可能有配置httpd.conf或htaccess取決於你的配置)
+0

git init成功運行.. git commit成功運行...當通過php網頁運行時,git push不運行(它在從PHP CLI執行時運行。 )可能是什麼原因呢? – Snehasish 2014-10-06 08:04:55

+0

它看起來像防火牆限制。嘗試(1)暫時關閉iptables(2)暫時關閉selinux。 – 2014-10-07 11:01:01

+0

我只記得這是windows。嘗試關閉防火牆。這也是powershell,檢查executionpolicy並將其設置爲無限制 – 2014-10-07 11:03:12