2017-04-21 53 views
0

我試圖設置一個系統,當我推送到GitHub上的存儲庫時,它會自動在遠程服務器上進行拉取和編譯。我發現了一些非常有用的工具,但我堅持最後一步:執行我的任務,gulp --dist如何用shell_exec()觸發一個吞嚥任務?

我使用this excellent PHP script觸發拉,這很好。爲了嘗試添加額外選項AFTER_PULL,我已經分叉了該存儲庫,該選項在完成後執行shell命令。 Here's my modification(也在下面)。在config.php,我設置如下:

define('AFTER_PULL', 'node ./node_modules/gulp/bin/gulp.js --dist'); 

似乎並不是永遠火,並沒有錯誤似乎要麼觸發。

我在想這可能是一個權限的事情,但用戶(萬維網數據)有權限在所有必要的目錄中工作。我發現this article detailing how to allow www-data to run without needing a password,但完成這些步驟後,仍然無法使用。

我相信我一定在做一些明顯錯誤的事情,我只是無法看到它。如果我在sudo -Hu www-data的終端中運行它,該命令將起作用。

... 

if (!empty(AFTER_PULL)) { 
    try{ 
     shell_exec(AFTER_PULL); 
    }catch (Exception $e) { 
     fputs($file, $e . "\n"); 
    } 
} 

... 
+1

你嘗試過用完整路徑節點二叉樹? – Peter

+0

我沒有,現在就試試。 – JacobTheDev

+1

@彼得哇,我認爲就是這樣。我知道這很愚蠢。 :) 謝謝! – JacobTheDev

回答

1

使用的完整路徑節點二叉樹:

define('AFTER_PULL', ' /usr/bin/node ./node_modules/gulp/bin/gulp.js --dist');