PHP——运行shell命令|脚本
内置函数
exec
shell_exec
passthru
system
配置
打开php.ini配置文件,并从disable_function将用到的函数从禁用中删除,然后重新载入或重启服务
脚本
脚本和小程序代码均位于public目录下
#!/bin/bash source /etc/profile time=`date +%Y-%m-%d-%H:%M:%S` cd /data/wwwroot/虚拟域名/public/miniprogram/ if [ -eq $? ] ; then
echo "$time INFO 进入目录成功" >> build_log.log
else
echo "$time ERROR 进入目录失败" >> build_log.log
exit
fi #删除之前编译文件 rm -rvf *.zip dist >> build_log.log if [ -eq $? ] ; then
echo "$time INFO 删除成功" >> build_log.log
else
echo "$time ERROR 删除失败" >> build_log.log
exit
fi #编译 npm run build wx $ $ >> /dev/null if [ -eq $? ] ; then
echo "$time INFO 编译成功" >> build_log.log
else
echo "$time ERROR 编译失败" >> build_log.log
exit
fi #打包 zip -r $-$time.zip dist >> /dev/null if [ -eq $? ] ; then
echo "$time INFO 打包成功" >> build_log.log
else
echo "$time ERROR 打包失败" >> build_log.log
exit
fi
配置权限
通过ps aux | grep nginx 可以知道nginx的用户为www
修改所属组和用户
chown -R www:www miniprogram/
chown -R www:www mini.sh
修改权限
chmod -R miniprogram/
chmod -R mini.sh
赋予权限
usermod -s /bin/bash www
PHP代码
shell脚本执行成功后会返回0
<?php namespace app\common\model; use think\Db; class WeixinShell extends Common
{ /**
* 打包小程序
* @param array $params
* @return array
*/
public function build($params = [])
{
$result = [
'status' => true,
'msg' => '编译成功',
'data' => [],
]; $version = $params['mini_version'];
$area = $params['mini_area'];
system("sh mini.sh {$version} {$area} ", $status);
$mini = glob("./miniprogram/*.zip");
$file = $mini['0']; $url = $_SERVER['HTTP_HOST'].'/';
if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){
$http = 'https://';
}elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) {
$http = 'https://';
}else {
$http = 'http://';
} if(file_exists($file)){
$result['data']['url'] = $http.$url.$file;
}else{
header("HTTP/1.1 404 Not Found");
} if($status){
$result['msg'] = '编译失败';
return $result;
}else{
return $result;
} } }
编译成功后返回URL地址,然后前端直接用window.location.href 可实现自动下载
成功示例
PHP——运行shell命令|脚本的更多相关文章
- 由Java代码运行shell命令/脚本
JDK有两种方法自带通Runtime.getRuntime().exec()和ProcessBuilder课上做, 后者是JDK1.5引进后,,政府还提出要放弃使用Runtime顺便做.现的时候就是採 ...
- 在R中运行Shell命令脚本(Call shell commands from R)
aaa.R Args <- commandArgs()cat("Args[1]=",Args[1],"\n")cat("Args[2]=&quo ...
- 4.Vim编辑器与Shell命令脚本
第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...
- 《Linux就该这么学》培训笔记_ch04_Vim编辑器与Shell命令脚本
<Linux就该这么学>培训笔记_ch04_Vim编辑器与Shell命令脚本 文章最后会post上书本的笔记照片. 文章主要内容: Vim编辑器 Shell脚本 流程控制语句 if语句 f ...
- 让你提前认识软件开发(23):怎样在C语言中运行shell命令?
第1部分 又一次认识C语言 怎样在C语言中运行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在很多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上, ...
- PHP 反引号运行Shell命令,C程序
/********************************************************************* * PHP 反引号运行Shell命令,C程序 * 说明: ...
- java运行shell命令,chmod 777 xxx,改变权限无效的解决的方法。
在java程序中运行shell命令,改变文件的权限.能够在命令行中运行 chmod 777 <span style="font-family: Arial, Helvetica, sa ...
- Vim编辑器与Shell命令脚本
章节简述: 本章节将教给您如何使用Vim编辑器来编写文档.配置主机名称.网卡参数以及yum仓库 ,熟练使用各个模式和命令快捷键. 我们可以通过Vim编辑器将Linux命令放入合适的逻辑测试语句(if. ...
- 以root用户身份在jenkins中运行shell命令
以下过程是CentOS 1.打开此脚本(使用VIM或其他编辑器): vim /etc/sysconfig/jenkins 2.找到$JENKINS_USER并更改为“root”: $JENKINS_U ...
随机推荐
- Git&Github基本操作与分支管理
Git的原理涉及快照流.链表.指针等,这里不作过多叙述. 1.基本操作 git init 创建一个 Git 仓库 git clone [url] 拷贝一个 Git 仓库到本地 git add [fil ...
- vim 正则非贪婪模式
比如多匹配使用 .* 效果自然是贪婪模式,JS 的非贪婪很简单,是 .*? 即可,而 vim 不同,语法是 .\{-},注意 \ 转义.
- 最新版XCoder 的使用方法
1.项目中,新建一个类库.名字随意,我取名:XCoder 2.右键 > 管理nuget程序包:搜索 XCode 并安装 3.在项目中新建:data.project.xml 的xml文件,并写入数 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(92)-打印EasyUI 的datagrid表格
前言 应用系统有时候需要打印Datagrid的表格内容,我们本节就来学习打印datagrid内容 打印主要使用:web打印(我们之前有讲过web打印插件jqprint) + 将datagrid重新编制 ...
- 关于VS2017 添加 EF的MVC控制器报错的解决方法
1. 错误描述 :no database provider has been configured fot this DbContext. 此类错误是上下文的注册造成的.解决方式在DBContext中 ...
- flask请求流程详解
先看一个流程图: 1.当一个请求进入的时候,Flask框架首先会实例化一个Request Context,封装了请求信息,保存在Request中.生成请求上下文后,Flask框架会将请求上下文推入到_ ...
- kuangbin 基础DP集合
HDU 1024第一遍水过,没有体会到这个题的奥妙,思考了很久终于体会了.大概意思是求把序列分成m段的子序列,并不一定要覆盖完,求子序列和的最大值我们首先要写出基本的动态转移方程: DP:dp[ i ...
- centos7下安装python3.6
一.wget 官网下载到本地 进入家目录: cd ~ wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz下载到本地 解压移动到/ ...
- h5-语义化标签
###1.语义化标签 在h5之前,在开发过程中大量div的id名称重复,例如div id="footer"来标记页脚内容,所以html5元素引入了语义化标签(一组新的片段类元素) ...
- idea 方便的设置代码段
使用快捷键(ctrl+alt+s)找到:从idea的菜单File->Settings->Editor->Live Templates 先添加Template Group,然后添加Li ...