• composer私有仓库搭建之系列二:web页面实现仓库列表更新


    诉求:在仓库列表显示的页面上,添加一个更新的按钮,实现仓库更新

    分析:仓库生成或者更新的列表的命令是

    全量生成或者更新:
    php bin/satis build satis.json public/
    
    指定生成或者更新
    php bin/satis build satis.json public/ test/test1 test/test2

    可以通过php的shell_exec函数实现此功能

    主要代码如下:

    全量生成或者更新:

    <?php
    $output = shell_exec('php /data/wwwroot/satis/bin/satis build /data/wwwroot/satis/satis.json /data/wwwroot/satis/public/');
    echo "<pre><p style='backgroud-color:#ccc;'>$output</p></pre>";
    exit();

    指定生成或者更新

    <?php
    //获取包名,注意此处的安全性处理,我这里就略过了
    if (! empty($_REQUEST)) {
        $packName = $_REQUEST['packName'];
        //指定包生成或者更新
        $output   = shell_exec('php /data/wwwroot/satis/bin/satis build /data/wwwroot/satis/satis.json /data/wwwroot/satis/public/ ' . $packName);
        echo "<pre><p style='backgroud-color:#ccc;'>$output</p></pre>";
        exit();
    }

    注意几点问题 

    1.权限问题

    因为网页版更新,是通过nginx+php-fpm来处理,所以注意php-fpm服务的启动用户,我的是www用户

    a.首先确保你有www用户,没有的话需要提前创建www用户,这里就不赘述了;

    b.其次要确保www用户有php的可执行权限,可以通过shell_exec('php -i');测试是否有可执行权限

    c.是否有目录的可执行权限,涉及到的目录有

    /data/wwwroot/satis/bin/satis 
    /data/wwwroot/satis/satis.json 
    /data/wwwroot/satis/public/

    2.用户密码问题

    首次执行之前,需要在服务器上通过php的cli模式手动触发一次,这个主要目的就是存储账号和密码,因为命令在执行时候会拉取代码,这个时候会提示输入gitlab的账号和密码,记得选择yes就行了,账号或者密码一般会存储在用户的家目录下.composer目录里面

    这样在网页点击更新按钮的时候就可以正常更新了。

    如果过程中遇到问题,主要可能是shell_exec,执行报错,可以通过输出错误结果进行排查

    <?php
    //命令行后面跟上2>&1,中间有空格,就可以输出整个命令执行的结果
    $output   = shell_exec('php /data/satis/composer/bin/satis build /data/wwwroot/satis/satis.json /data/wwwroot/satis/public/ 2>&1');
    print_r($output);
  • 相关阅读:
    数据分析day04
    数据分析day03
    数据分析 day02
    Index of /android/repository
    WPF ListView 数据懒加载
    WPF TextBlock 文字超长截断并显示省略符号
    android adb socket 通信
    android 获取 cpu 频率信息
    Android 联系人导入导出(VCard格式)
    Android Contact 导入导出 vcf格式(不依赖第三方库)
  • 原文地址:https://www.cnblogs.com/joshua317/p/13118154.html
Copyright © 2020-2023  润新知