2015-02-06 45 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> 
相关问题