我有一個GIT倉庫,我使用PHP腳本從主分支中提取並更新服務器上的文件。這只是測試它的簡單解決方案。我想在github上添加一個webhook,在成功推送後發送回調,這樣我就可以從這個回購中獲得回報。PHP:當通過HTTP和命令行運行腳本時產生不同的結果
腳本運行在命令行
所不同的是,當我從HTTP運行它,它不拉新的變化,只是顯示它是最新的,即使我100%確定回購有新的變化也不會做任何事情。輸出來自GIT命令,所以我確定它可以正常工作,並且Apache有適當的權限來運行腳本文件和其中使用的命令。
當我通過命令行(通過相同的腳本或只是乾淨的git命令)運行它時,一切正常,腳本會引發新的更改並顯示標準的GIT輸出。
PHP代碼:
echo "Pulling changes from master branch...\n";
$result = shell_exec('cd /var/git-test && git reset --hard HEAD && git pull');
if($result !== null){
echo $result;
}else{
echo $result;
echo "Error in Git pull comand";
}
我該如何解決呢?
您是否嘗試過使用apache用戶手動運行腳本? –
你怎麼知道它「顯示它是最新的」? – markus
爲了防止shell_exec應該被禁用的警告,啓用它並不安全。 – markus