内置函数

PHP | 系统程序执行

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命令|脚本的更多相关文章

  1. 由Java代码运行shell命令/脚本

    JDK有两种方法自带通Runtime.getRuntime().exec()和ProcessBuilder课上做, 后者是JDK1.5引进后,,政府还提出要放弃使用Runtime顺便做.现的时候就是採 ...

  2. 在R中运行Shell命令脚本(Call shell commands from R)

    aaa.R Args <- commandArgs()cat("Args[1]=",Args[1],"\n")cat("Args[2]=&quo ...

  3. 4.Vim编辑器与Shell命令脚本

    第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...

  4. 《Linux就该这么学》培训笔记_ch04_Vim编辑器与Shell命令脚本

    <Linux就该这么学>培训笔记_ch04_Vim编辑器与Shell命令脚本 文章最后会post上书本的笔记照片. 文章主要内容: Vim编辑器 Shell脚本 流程控制语句 if语句 f ...

  5. 让你提前认识软件开发(23):怎样在C语言中运行shell命令?

    第1部分 又一次认识C语言 怎样在C语言中运行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在很多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上, ...

  6. PHP 反引号运行Shell命令,C程序

    /********************************************************************* * PHP 反引号运行Shell命令,C程序 * 说明: ...

  7. java运行shell命令,chmod 777 xxx,改变权限无效的解决的方法。

    在java程序中运行shell命令,改变文件的权限.能够在命令行中运行 chmod 777 <span style="font-family: Arial, Helvetica, sa ...

  8. Vim编辑器与Shell命令脚本

    章节简述: 本章节将教给您如何使用Vim编辑器来编写文档.配置主机名称.网卡参数以及yum仓库 ,熟练使用各个模式和命令快捷键. 我们可以通过Vim编辑器将Linux命令放入合适的逻辑测试语句(if. ...

  9. 以root用户身份在jenkins中运行shell命令

    以下过程是CentOS 1.打开此脚本(使用VIM或其他编辑器): vim /etc/sysconfig/jenkins 2.找到$JENKINS_USER并更改为“root”: $JENKINS_U ...

随机推荐

  1. vscode 缩进改为2空格

    因为vscode默认启用了"editor.detectIndentation": true”根据文件类型自动设置tabsize的选项. 在配置中加上 "editor.de ...

  2. hibernate坑边闲话

    使用hibernate各种各样的坑 Remember that ordinal parameters are 1-based node to traverse cannot be null 这两个错误 ...

  3. UVA 10791 -唯一分解定理的应用

    #include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> ...

  4. java高精度学习笔记

    高精度基本用法 valueOf(parament)     将参数转换为指定的类型 add()   相加   subtract() 相减    multiply()  相乘    divide()  ...

  5. 课程存储校对:程序设计思想、源程序代码、运行结果截图,以及开发过程中的项目计划日志、时间记录日志、缺陷记录日志(PSP0级记录)。

    1.程序设计思想 ⑴将JDBC驱动jar包导入到WEB-INF的lib文件夹下 ⑵建立数据库,在数据库中建表,分别将课程名称.任课教师及上课地点录入到列中 ⑶首先写出加载驱动.关闭资源的工具类和异常处 ...

  6. Redis启动及密码修改

    .cmd启动Redis: redis-server.exe redis.windows.conf #注意指定配置文件来启动 .cmd登陆redis redis-cli.exe -h -a .修改密码 ...

  7. jmeter5.0生成html报告 快速入门

    JMeter性能测试5.0时代之-多维度的图形化HTML报告 快速入门 1.确认基本配置 在jmeter.properties或者user.properties确认如下配置项: jmeter.save ...

  8. jenkins 插件介绍

    1.jenkins 利用maven编译,打包,所需插件:Maven Integration: Maven集成插件这个插件提供了Jenkins和Maven的深度集成,无论是好还是坏:项目之间的自动触发取 ...

  9. jmeter环境配置

    Java 8 安装 正常安装,一路默认就好,记住安装路径,配置环境变量时用得到.默认安装路径:C:\Program Files\Java\jdk1.8.0_91. 安装好之后会有两个文件夹一个是jdk ...

  10. oracle小记:dba_data_files

    今天给表空间扩展的时候,使用了dba_data_files进行查询.查阅了网上的资料. 该系统系统中含有以下字段 每个字段的含义如下: