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 ...
随机推荐
- vscode 缩进改为2空格
因为vscode默认启用了"editor.detectIndentation": true”根据文件类型自动设置tabsize的选项. 在配置中加上 "editor.de ...
- hibernate坑边闲话
使用hibernate各种各样的坑 Remember that ordinal parameters are 1-based node to traverse cannot be null 这两个错误 ...
- UVA 10791 -唯一分解定理的应用
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> ...
- java高精度学习笔记
高精度基本用法 valueOf(parament) 将参数转换为指定的类型 add() 相加 subtract() 相减 multiply() 相乘 divide() ...
- 课程存储校对:程序设计思想、源程序代码、运行结果截图,以及开发过程中的项目计划日志、时间记录日志、缺陷记录日志(PSP0级记录)。
1.程序设计思想 ⑴将JDBC驱动jar包导入到WEB-INF的lib文件夹下 ⑵建立数据库,在数据库中建表,分别将课程名称.任课教师及上课地点录入到列中 ⑶首先写出加载驱动.关闭资源的工具类和异常处 ...
- Redis启动及密码修改
.cmd启动Redis: redis-server.exe redis.windows.conf #注意指定配置文件来启动 .cmd登陆redis redis-cli.exe -h -a .修改密码 ...
- jmeter5.0生成html报告 快速入门
JMeter性能测试5.0时代之-多维度的图形化HTML报告 快速入门 1.确认基本配置 在jmeter.properties或者user.properties确认如下配置项: jmeter.save ...
- jenkins 插件介绍
1.jenkins 利用maven编译,打包,所需插件:Maven Integration: Maven集成插件这个插件提供了Jenkins和Maven的深度集成,无论是好还是坏:项目之间的自动触发取 ...
- jmeter环境配置
Java 8 安装 正常安装,一路默认就好,记住安装路径,配置环境变量时用得到.默认安装路径:C:\Program Files\Java\jdk1.8.0_91. 安装好之后会有两个文件夹一个是jdk ...
- oracle小记:dba_data_files
今天给表空间扩展的时候,使用了dba_data_files进行查询.查阅了网上的资料. 该系统系统中含有以下字段 每个字段的含义如下: