下载apk文件直接a链接即可,下面是用header下载文件,apk会显示HTML,乱码。。。
<?php  

    header("Content-Type:text/html; charset=utf-8");  
    if(get_device_type()=='ios'){  
    $ff='huanbaoba.ipa';  
        header('application/iphone');  ios专属现在头文件
        header('Content-Disposition:attachment;filename="huanbaoba.ipa"');  
    }else{  
    $ff='huanbaoba.apk';  
        header('application/vnd.android.package-archive');  
        header('Content-Disposition:attachment;filename="huanbaoba.apk"');  
    }  
    readfile($ff);   
    //获取设备类型
    function get_device_type(){  
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);  
    $type = 'other';  
    if(strpos($agent, 'iphone') || strpos($agent, 'ipad')){  
    $type = 'ios';  
        }  
    if(strpos($agent, 'android')){  
    $type = 'android';  
        }  
    return $type;  
    } 
是不是微信端打开网页

一:js判断设备类型

    function is_weixn(){  
        var ua = navigator.userAgent.toLowerCase();  
        if(ua.match(/MicroMessenger/i)=="micromessenger") {  //判断是否在微信中打开此网页
            return true;  
        } else {  
            return false;  
        }  
    }  

二: php判断设备及浏览器等等类型

    function is_weixin(){  
        if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {  
                return true;  
        }    
        return false;  
    }  

function deldir($dir) {
    $dh=opendir($dir);
    while ($file=readdir($dh)) {
        if($file!="." && $file!="..") {
            $fullpath=$dir.'/'.$file;
            if(!is_dir($fullpath)) {
                unlink($fullpath);
              } else {
                       $this->systemInfoSafe($fullpath);
                     }
          }
     } 
    closedir($dh);
    if(rmdir($dir)) {
        return true;
    } else {
        return false;
           }

}

tp5 备份数据库:use think/Config
public function  mysql()
    {
        @$falg=file_get_contents("./install/sql/database.sql");
        if($falg==true){
            unlink("./install/sql/database.sql");
        }
        set_time_limit(0);
        $config=Config::get('database');
        $link=mysqli_connect($config['hostname'],$config['username'],$config['password']);
        mysqli_select_db($link,$config['database']);
        $res=Db::query("show tables");
        $tabList=array();
        foreach($res as $k=>$v){
            foreach($v as $val){
                array_push($tabList,$val);}
        }
        $to_file_name = "./install/sql/database.sql";
        $info = "-- ----------------------------\r\n";
        $info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n";
        $info .= "-- @qq.com\r\n";
        $info .= "-- ----------------------------\r\n\r\n";
        file_put_contents($to_file_name,$info,FILE_APPEND);

//将每个表的表结构导出到文件
        foreach($tabList as $val){
            $sql = "show create table ".$val;

            $row =Db::query($sql);

            $info = "-- ----------------------------\r\n";
            $info .= "-- Table structure for `".$val."`\r\n";
            $info .= "-- ----------------------------\r\n";
            $info .= "DROP TABLE IF EXISTS `".$val."`;\r\n";
            $sqlStr = $info.$row[0]['Create Table'].";\r\n\r\n";
            //追加到文件
            file_put_contents($to_file_name,$sqlStr,FILE_APPEND);

            //将每个表的数据导出到文件
            $sql = "select * from ".$val;
            $res =Db::query($sql);
            //如果表中没有数据,则继续下一张表
            if(empty($res)) continue;
            //
            $info = "-- ----------------------------\r\n";
            $info .= "-- Records for `".$val."`\r\n";
            $info .= "-- ----------------------------\r\n";
            file_put_contents($to_file_name,$info,FILE_APPEND);
            //读取数据

            foreach($res as $key=>$value){
                $row=array_values($value);
                $sqlStr = "INSERT INTO `".$val."` VALUES (";
                foreach($row as $zd){
                    $sqlStr .= "'".mysqli_escape_string($link,$zd)."', ";
                }
                //去掉最后一个逗号和空格
                $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);
                $sqlStr .= ");\r\n";
                file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
            }
            //释放资源

            file_put_contents($to_file_name,"\r\n",FILE_APPEND);

        }

        $returnData['status'] = 1;
        $returnData['msg'] = "备份成功";
        return json_encode($returnData);

    }

OneinStack自带了Let’s Encrypt安装组件,要配置SSL,仅需要cd到oneinstack目录,执行./addons.sh命令添加组件,如下图:

添加Let’s Encrypt组件

安装完Let's Encrypt组件后,再执行./vhost.sh命令添加新的虚拟主机了。如果是已经存在的虚拟主机,则需要先./vhost.sh del删除虚拟主机后,再执行./vhost.sh命令添加虚拟主机。如下图:
添加虚拟主机

正常情况下,成功添加完虚拟主机后,https站点就部署成功了。但如果是阿里云服务器,则需要在安全组配置中开启443端口。

证书的定时更新(自动部署)

由于Let's Encrypt提供的证书是有期限的,因此需要定期更新。成功添加后,cd /etc 下,crontab -l查看定时任务

生成的定时任务

执行一下定时脚本中的代码,如下图:

脚本执行结果,反馈已经成功更新

30 2 1 表示每周一早上2点30分执行一次证书更新请求。

附原文:oneinstack配置https
附另一篇(推荐):配置https

前言:因为emoji占四个字符,而默认的utf8最多只是3个,所以会乱码,而utf8mb4是支持的
最新版的mysql 7是默认支持emoji表情的,不用任何配置,其他版本的必须得在5.5.3以上的版本才支持utf8mb4;

一、修改mysql配置文件:(我用的是oneinstack。在etc/my.conf)

default-character-set = utf8mb4
character-set-server = utf8mb4

二、把数据库、表、字段的字符集设置为utf8mb4(SQL语句或者Navicat工具控制)

# 修改数据库:  
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;  
# 修改表:  
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
# 修改表字段:  
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
PS:我用的是tp5框架,database配置里数据库默认编码里改为:'charset' => 'utf8mb4';

三、检查环境变量 和测试 SQL 如下:(设置:set NAME utf8mb4)

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';  
+--------------------------+--------------------+  
| Variable_name            | Value              |  
+--------------------------+--------------------+  
| character_set_client    | utf8mb4            |  
| character_set_connection | utf8mb4            |  
| character_set_database  | utf8mb4            |  
| character_set_filesystem | binary            |  
| character_set_results    | utf8mb4            |  
| character_set_server    | utf8mb4            |  
| character_set_system    | utf8              |  
| collation_connection    | utf8mb4_unicode_ci |  
| collation_database      | utf8mb4_unicode_ci |  
| collation_server        | utf8mb4_unicode_ci |  
+--------------------------+--------------------+  

以上即可。