2015-02-06 43 views
0

我有這段代碼應該在我的網頁上顯示當前的修訂版本。我通過php index.php在我的linux服務器上運行它。代碼工作正常。它的HTML代碼,並顯示修訂。但是,當我試圖通過我的網頁瀏覽器(google-chrome 40)訪問我的網頁時。它不顯示修訂。通過php顯示修訂版

<?php 
    $revision = substr(shell_exec('git rev-parse origin/master'),0,7); 
?> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>Test - shell_exec</title> 
    </head> 
    <body> 
     <footer class="footer"> 
      <p>Revision <?php echo $revision; ?></p> 
     </footer> 
    </body> 
</html> 
+0

http://stackoverflow.com/questions/8562544/executing-git-commands-via-php? – rjv 2015-02-06 07:56:13

+0

你應該將一個Git Hook store的修訂版本添加到一個可以傳輸到遠程服務器的文件中。大多數服務器阻止像'shell_exec'這樣的函數的執行。 – KFO 2015-02-06 08:03:28

+0

@KFO我使用的服務器已經是我的git-server。我的index.php文件夾已經被'git:root'擁有,所以每當我推它時,都會通過'git fetch && git reset --hard origin/master'進行更新。 – KeiKun 2015-02-06 08:06:17

回答

0

好吧,我剛解決了它。 看來,當你禁用exec時,shell_exec也不起作用。

0

也許你的問題有點矯枉過正,但我​​使用ANT在部署之前構建我的網站。通過此ANT構建,可以刪除,移動,添加或更改某些文件。 這樣你就可以在配置文件中放置GIT標籤(我總是在構建/部署之前使用標籤)。在配置文件上查看我的其他post

我用ANT做大致有以下幾種:

  1. 化妝GIT在一個單獨的文件夾中創建一個副本
  2. 條中的所有文件,不應該去網上
  3. 進行一些更改配置文件
  4. 創建一個CHANGELOG文件,其中所有提交整齊排列,由GIT標記分隔以便更好地閱讀。

然後,在一次FTP運行中盲目地上傳整個東西都是安全的。

步驟獲得在配置文件中的最新標籤:

  • 創建例如一個配置文件你的根文件夾( 「site.default.properties」)
  • 把修改屬性在裏面(SITE_REVISION_NUMBER = XXXX)
  • 使與GIT ANT工作得到GIT資訊

這最後一件東西能像工作這在Ant構建腳本:

<property name="GIT-src" location="/home/martin/deploy/build"/> 
<exec executable="git" 
     failonerror="true" 
     outputproperty="tag.current" 
     dir="${GIT-src}"> 
     <arg line="describe --tag"/> 
</exec> 

,那麼你有一個屬性(「tag.current」),你可以把一個配置文件,並從PHP讀取它:

<propertyfile 
     file="${deploy}/site.default.properties" 
     comment="Site properties"> 
     <entry key="SITE_REVISION_NUMBER" value="${tag.current}"/> 
</propertyfile> 
相關問題