簡體   English   中英

shell_exec('git push origin master')將不起作用

[英]shell_exec('git push origin master') won't work

我想將包含數據的文件夾推送到Atlassian Git存儲中的空存儲庫中。 該存儲庫是通過rest api創建的。 遠程原點已設置。 當我進入

$ git push origin master

在外殼中一切正常。 當我使用PHP交互式外殼程序並輸入

exec('git push origin master');

它也可以。 但是,當在我的PHP文件中調用代碼時,什么也沒有發生。 當然,代碼是相同的。 我在正確的工作目錄中(我在shell_exec之前使用chdir()進行了更改)。 沒有錯誤報告(即使將error_reporting設置為E_ALL ),並且當我在exec()設置輸出參數時,也會得到一個空數組。

有人可以幫忙嗎?

交互式執行代碼或通過外殼執行命令時,您將在用戶帳戶和外殼環境下執行。

我認為這不起作用的原因是您以另一個用戶身份執行PHP腳本(並且可能缺少ssh / git環境配置)。

需要更多信息才能更好地回答您的問題,但是您可能希望首先驗證正在執行PHP文件的用戶,並且還可以通過執行以下操作來執行git push origin master

sudo su -s /bin/bash -c "cd /my/git/repo/dir; git push origin master" MYPHPEXECUTEUSER

我發現在使用shell_exec()時,我必須在shell命令的末尾添加'2>&1'以獲得錯誤輸出。 它返回“致命:無法讀取” URL”的密碼:未配置設備”。 我只需要以http基本身份驗證方式將密碼添加到url。 現在一切正常。 感謝您的回答:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM