git push 鉤子的實現

2021-09-24 21:18:47 字數 960 閱讀 2839

(例如:

問題

//這種看著沒問題,但是不好使

system('cd /opt/www/chat && git pull');

辦法

<?php

//執行命令:cd到目標檔案,git pull

system('cd /opt/www/chat && git pull 2>&1');

問題

執行上述檔案後會一直提示你金鑰驗證失敗,事實上你在命令列執行一點問題沒有
原因

你在命令列中執行的是在root使用者下,

但是執行php檔案的時候是哪個使用者在執行?

php

<?php

exec("cd ~ && cd - && cd -", $output);//跳到使用者目錄,再回剛剛的目錄,然後跳到使用者目錄

print_r($output);//輸出(實際上輸出的是你的php檔案目錄和執行php指令碼的使用者根目錄)

php執行結果分析

正常情況下應該輸出類似/root或者/home/git這種看的懂得使用者

但是實際上我的輸出是/var/lib/php/fpm

​what?

​php的執行目錄是哪個使用者呢?

我們檢視passwd並沒有發現疑似使用者。。。

(經過猜測,我肯定他是php-fpm使用者,別問我怎麼猜到的)

知道使用者後就簡單了

我們直接進入該使用者就好

su php-fpm

​cd ~

​ls -ah

這裡就不多說了
更新專案後再次執行git pull(在php-fpm使用者下)

又報錯。。。

別擔心,看看又是許可權的問題

直接暴力777(將你的專案檔案許可權改為777)

執行,成功!!!

到推送事件中(例如:gitlab後台的setting->integrations)

實現自動git push的python指令碼

os實現免密登入的方法 關於作者 我想用python指令碼實現自動push,首先我有乙個完整的code但是我想每天都執行一次,並將執行之後專案的改變進行 push 更新。解決思路 模擬 git add commit m push 的過程 解決免密push的問題 整合需求編寫 開始介紹前,先設定好自己...

批處理實現自動Git push

用git用的多,每次修改檔案後都需要敲幾條命令 git add git commit git push 太麻煩了 於是想到使用批處理 bat 來自動化這個過程 注意 windows環境下 在git本地倉庫目錄下新建乙個bat檔案,如gitupdate.bat 新增內容 1 git add 2 git...

PHP的鉤子實現解析

php程式設計的鉤子實現,示例講解和解釋它們的作用,寫了乙個樣板的鉤子實現 鉤子是程式設計裡乙個常見的概念,非常的重要。它使得系統變得非常容易拓展 而不用理解其內部的實現機理,這樣可以減少很多任務作量 只要有乙個鉤子樣本,能很容易仿照第乙個鉤子快速的編寫第二個鉤子,這裡對鉤子進行乙個簡單的理解。下面...