composer私有库搭建

安装

cd ~/web
composer create-project composer/satis --stability=dev --keep-vcs
mv satis packages.dev.com
cd packages.dev.com

satis的配置是通过satis.json进行的,我们在当前目录新建一个satis.json

{
    "name": "My Repository",
    "homepage": "http://packages.dev.com",
    "repositories": [
        {"type": "vcs", "url": "https://github.com/helloMJW/aliyun-sms.git"}
    ],
    "require": {
        "hellomjw/aliyun-sms": "*"
    }
}

tip:如果私建git库没有https, 上面json配置就要增加下面配置值

{
"config": {
        "secure-http": false
    }
}

生成

php bin/satis build satis.json public/

简单的使用php内置的服务器启动一个简单的WEB服务器

php -S 0.0.0.0:8088 -t public/

搭建过程日志

sudo php bin/satis build satis.json public/ 执行后出现下面错误

You must set up the project dependencies using Composer before you can use Satis

原因: 由于之前忽略 PHP部分扩展未安装导致, 根据之前的未安装的扩展安装上 问题就可以解决.


相关资料

github-satis
Private Packagist

使用 satis 搭建一个私有的 Composer 包仓库
如何搭建Composer私有仓库
服务器上的 Git

composer配置之repositories-对象有什么作用

[]是数组方式, 顺序找库.

{
    "repositories": [
         {
             "type": "composer",
             "url": "http://packages.foo.com"
         }
    ]
}

{}对象方式: 使用JSON对象表示法。但是,JSON键/值对应被视为无序,因此无法保证一致的行为. 那么用对象方式有什么优势?

{
    "repositories": {
         "foo": {
             "type": "composer",
             "url": "http://packages.foo.com"
         }
    }
}

相关资料

官方文档-schema-repositories Tip: ctrl+f “repositories”
composer.json 组织架构 Tip: 感觉是直接Google翻译的.

Composer 小技巧

  1. 更新指定某个依赖库: composer update foo/bar

  2. 比如库的描述、作者、更多参数,甚至仅仅增加了一个空格,都会改变文件的md5sum: composer update nothing

  3. 如果你用的Composer版本足够新,那么你可以直接使用–lock选项: composer update --lock

  4. 不编辑composer.json的情况下安装库: composer require "foo/bar:1.0.0"

  5. 这个方法也可以用来快速地新开一个项目。init命令有–require选项: composer init --require=foo/bar:1.0.0 -n (用-n,这样就不用回答问题)

  6. 在部署代码到生产环境的时候,别忘了优化一下自动加载: composer dump-autoload --optimize (安装包的时候可以同样使用–optimize-autoloader。不加这一选项,你可能会发现20%到25%的性能损失)

相关资料

PHP 开发者该知道的 5 个 Composer 小技巧

php-composer 本地开发及调试

学习及测试记录-log

用一个别人开发好的composer, 最近在集成腾讯滑动验证码, 用到这个包 tekintian/tekintcaptcha

github-url: https://github.com/tekintian/TekinTCaptcha
composer-url: https://packagist.org/packages/tekintian/tekintcaptcha

现在如果发现这个包有需要改进的, 要如何修改呢?

step1: 目录文件夹准备好

|– ~/test
|–|– dev_code
|–|– test_code

step2: 拉取github地址项目到dev_code文件夹中

step3: 在文件夹test_code中建立文件 composer.json 内容如下

{
    "name": "tekintian/tekintcaptcha-test",
    "type": "library",
    "require": {
        "tekintian/tekintcaptcha": "dev-master"
    },
    "repositories": {
        "tekintian": {
            "type": "path",
            "url": "../dev_code/TekinTCaptcha"
        }
    }
}

step4: 在test_code目录中执行命令 composer install, 就安装成功了. 但是可以看到test_code/vendor/tekintian/tekintcaptcha 这个文件夹是这个链接, 在改dev_code的代码就是在改test_code的代码.

这个composer包有写phpunit, 那么看看这个unit怎么玩. TekinTCaptcha-issues

vendor/tekintian/tekintcaptcha composer install 安装好依赖.

执行: ./vendor/bin/phpunit

相关资料

composer-了解及开发

本地开发和调试composer包
通过Composer调用本地正在开发中的Package

如何开发、本地测试、发布Laravel扩展包 未实验

阿里云滑动验证码集成-composer版本

可使用的composer

  • dy7338/aliyun-php-sdk-afs
  • oygza/aliyun-php-sdk-afs

oygza/aliyun-php-sdk-afs 使用

dy7338-aliyun-php-sdk-afs 使用

dy7338/aliyun-php-sdk-afs地址: https://packagist.org/packages/dy7338/aliyun-php-sdk-afs

安装: composer require dy7338/aliyun-php-sdk-afs

在控制器的方法中

$iClientProfile = \ DefaultProfile::getProfile ("cn-hangzhou", "YOUR ACCESSKEY", "YOUR ACCESS_SECRET");
$client = new \ DefaultAcsClient($iClientProfile);
\ DefaultProfile::addEndpoint ("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");

$request = new \ afs\Request\V20180112\AuthenticateSigRequest();
$request->setSessionId ($sessionid);// 必填参数,从前端获取,不可更改,android和ios只变更这个参数即可,下面参数不变保留xxx
$request->setToken ($token);// 必填参数,从前端获取,不可更改
$request->setSig ($sig);// 必填参数,从前端获取,不可更改
$request->setScene ($scene);// 必填参数,从前端获取,不可更改
$request->setAppKey ($appkey);//必填参数,后端填写
$request->setRemoteIp (xxxx);//必填参数,后端填写

$response = $client->doAction ($request);//返回code 100表示验签通过,900表示验签失败
var_dump($response);

方式二-使用use

use DefaultProfile;
use DefaultAcsClient;
use afs\Request\V20180112\AuthenticateSigRequest;

$iClientProfile = DefaultProfile::getProfile ("cn-hangzhou", "YOUR ACCESSKEY", "YOUR ACCESS_SECRET");
$client = new  DefaultAcsClient($iClientProfile);
DefaultProfile::addEndpoint ("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");

$request = new AuthenticateSigRequest();
$request->setSessionId ($sessionid);// 必填参数,从前端获取,不可更改,android和ios只变更这个参数即可,下面参数不变保留xxx
$request->setToken ($token);// 必填参数,从前端获取,不可更改
$request->setSig ($sig);// 必填参数,从前端获取,不可更改
$request->setScene ($scene);// 必填参数,从前端获取,不可更改
$request->setAppKey ($appkey);//必填参数,后端填写
$request->setRemoteIp ('xxxx');//必填参数,后端填写

$response = $client->doAction ($request);//返回code 100表示验签通过,900表示验签失败
dump($response);

相关资料

阿里云滑动验证码集成-thinkphp3.2版本
oygza-aliyun-php-sdk-afs安装出错处理

搭建一个私有的 Composer仓库-待处理

SMS-短信服务composer

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件, 把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。如果文件或路径不存在,自行创建即可. Tip: 用创建好的 git 用户来创建 authorized_keys文件. 不然还是会要输入密码.

相关资料

如何搭建Composer私有仓库
使用 satis 搭建一个私有的 Composer 包仓库