PHP
PHP 语言识别策略
平台默认会根据源码根目录是否有index.php
文件或者 composer.json
来识别为 PHP 项目.
平台编译运行机制
- 预编译处理会探测是否定义了启动命令配置文件 Procfile ,如果未定义会生成默认 War 包启动配置文件;
- 预编译处理完成后,会根据语言类型选择 PHP 的 buildpack 去编译项目.在编译过程中会安装定义的 PHP 版本,安装相关依赖包;
- 编译完成后会检查是否在平台设置了 Procfile 参数,若配置了会重写启动命令配置文件 Procfile.
# 安装依赖包,解决依赖关系
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
shell hook 支持
通过配置 composer.json
进行 shell hook 对调用
{
"scripts": {
"pre-install-cmd": ["bash ./pre-install-cmd.sh"],
"post-install-cmd": ["bash ./post-install-cmd.sh"]
},
"require": {
"php": "7.1.21",
"ext-memcached": "*"
}
}
其中 pre-install-cmd
定义内容会在 install 前执行,post-install-cmd
定义内容会在 install 后执行,定义脚本必须提前创建并赋予执行权限
PHP 项目源码规范
在此步骤中,你需要提供一个可用的 PHP 源码程序用来部署在 Rainbond 平台上,此应用程序至少需要满足如下条件:
- 本地可以正常运行的 PHP 程序
- 源码程序必须托管在 gitlab 等相关 git 或者 svn 服务上
- 源码程序根目录下必须需要存在 php 文件
- 源码程序根目录下必须存在
composer.json
,用来管理 PHP 项目的依赖,也是 Rainbond 识别为 PHP 语言的必要条件,同时文件中必须定义项目需要的 php 版本,定义方式见下文。 - 源码程序项目根目录下必须存在
composer.lock
文件 - 源码程序项目根目录下需要定义
Procfile
,用来定义程序启动方式