[英]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.