【搬站干货】宝塔面板站点太多如何快速免费迁移网站列表和数据库列表数据
如果宝塔面板的网站有多达几十上百个,又不想使用宝塔的迁移工具,那么应该如何实现快速迁移网站数据呢一.迁移网站数据 进入文件管理,将所有网站打包下载,在将压缩包上传到新的宝塔面板/www/wwwroot/目录下。然后解压即可二.迁移宝塔中网站列表和数据库列表的数据1. 首先进入旧的宝塔面板,当前文件目录定位到如下路径
如果宝塔面板的网站有多达几十上百个,又不想使用宝塔的迁移工具,那么应该如何实现快速迁移网站数据呢一.迁移网站数据 进入文件管理,将所有网站打包下载,在将压缩包上传到新的宝塔面板/www/wwwroot/目录下。然后解压即可二.迁移宝塔中网站列表和数据库列表的数据1. 首先进入旧的宝塔面板,当前文件目录定位到如下路径
一.前言关于JavaScript里的指针,似乎这个话题已经超出了初、中级前端程序员的理解范围,实际上所有真正的编程语言都是会接触到内存指针,指针的意思可以理解为数组中的索引(index)和对象中的属性名(key),只不过这个指针(或者叫索引)是给内存服务的,那么问题来了,指针又在js里面有什么作用,为什么要去了解它,下面开始谈谈我对js指针的看法和用途二.正文不知道有没有老哥遇到过类似的如下问题(看代码),我定义了一个变量obj,直接给它赋值为一个对象,包含属性a和b,然后再定义一个函数,调用这个函数后,你猜猜这时候发生了什么?
由于业务需求,只需要用到layer,我就单独引用了layer模块,但是出现了加载不到layer.css的问题一看源代码,原来是默认读取document文档最后一个script标签的src路径来加载layer.css的,这样有时候当然会出问题!!为了解决这个问题,于是便有了这篇博客!下面看干货,怎么改代码解决这个问题首先找到layer.js中要改的代码部分(见下图),注意每个layer版本修改位置和代码可能不完全一样,不用在意!
1. get_defined_vars(PHP4>=4.0.4,PHP5)—获取由所有已定义变量所组成的数组
一.composer版本要对上# composer降级composer self-update --1# 再更新到指定版本(您项目支持的那个版本)composer self-update 2.4.0二.swoole无法使用openssl该问题是宝塔自带的安装时,swoole新版本默认不会安装openssl扩展
由于各种问题,动态配置环境变量不一定好使,于是写了个~ /** * 动态配置.env环境变量 * * @param string $key 变量名 支持组 * @param string $value 变量值 * @return void */ public function setEnv(string $key = '', string $value = '') { $file = root_path() . '.env'; $data = ''; if (is_file($file)) { $data = trim(file_get_contents($file)); } if ($data == '') { // 没有内容就直接创建 $data = <<<Env APP_DEBUG = false [APP] DEFAULT_TIMEZONE = Asia/Shanghai [DATABASE] TYPE = mysql HOSTNAME = HOSTPORT = 3306 USERNAME = PASSWORD = DATABASE = PREFIX = CHARSET = utf8 DEBUG = true [LANG] default_lang = zh-cn [REDIS] REDIS_HOSTNAME = PORT = 6379 REDIS_PASSWORD = SELECT = 0 [QUEUE] QUEUE_NAME =Env; } // 修改配置 $key = strtoupper($key); if (strpos($key, '.')) { $arr = explode('.', $key, 2); $key1 = $arr[0]; $key2 = $arr[1]; $start = mb_strpos($data, '[' . $key1 . ']'); if ($start !== false) { // 找到配置组 $str_up = mb_substr($data, 0, $start); $str_lower = mb_substr($data, $start); if (preg_match('/' . $key2 . ' =/', $str_lower)) { // 找到就直接替换 $str_lower = preg_replace('/(\n' . $key2 . ' =(.*)|\n' . $key2 . ' =)/', "\n" . $key2 . ' = ' . $value, $str_lower); $data = $str_up . $str_lower; } else { // 未找到直接在组下面追加 $str_q = '/\[' . $key1 . '\]/'; $str_h = "\[" . $key1 . "\]\n" . $key2 . " = " . $value; $str_lower = preg_replace($str_q, $str_h, $str_lower); $data = $str_up . $str_lower; } } else { // 未找到配置组 追加 $data = $data . "\n[" . $key1 . "]\n" . $key2 . " = " . $value; } } else { // 说明是顶层配置 if (preg_match('/' . $key . ' =/', $data)) { // 直接替换数据 $data = preg_replace('/([\n]{0,1}' . $key . ' = (.*)|[\n]{0,1}' . $key . ' =)/', "\n" . $key . ' = ' . $value, $data); } else { // 追加 $data = $key . " = " . $value . "\n" . $data; } } file_put_contents($file, $data); }
一、UI组件及框架element-饿了么出品的Vue2的webUI工具套件mint-ui-Vue2的移动UI元素iview-基于Vuejs的开源UI组件库Keen-UI-轻量级的基本UI组件合集vue-material-通过VueMaterial和Vue2建立精美的app应用muse-ui-三端样式一致的响应式UI库vuetify-为移动而生的VueJS2组件框架
说明这里为大家带来一款自用的web防火墙,全开源,可放心使用至于为什么要写一个,无非就是现在遵循psr规范自动加载的项目越多越多,同时包括现有项目或者以后的项目,针对防御方面的轮子都比较少现在有了这个,一键安装即用,省心省力,岂不美哉#安装命令如下 注意,需要在服务器命令行的项目下执行cd "自己的项目路径"composer require chenm/websafe附录觉得好用麻烦点个Star哦gitee传送门:https://g
欲先善其事,必先利其器,想要拥有一个高效的开发条件,那么拥有一个好的开发工具和环境是有必要的!!有了下面这些插件,想必会让你bug少了,效率高了,头发也掉的少了!1.函数注释生成插件#可一键生成 支持自动检测函数参数,智能检测数据类型和返回数据类型#使用方法:函数上面一行 敲下/**再回车php docbloker