#229
展开↯#230
作者:广西南宁市
启动容器挂载到本地相关配置文件: #,广西南宁市,2021-10-14,21:16:15, Docker 重启,容器自动启动
#,广西-南宁-中国电信,2021-10-15,00:58:56, 给docker中的PHP安装 gd扩展
首先主机中执行docker exec -it <容器名 or id> /bin/bash进入容器的命令行
在php.ini配置文件中直接加入extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd.so就行了
#,广西-南宁-中国电信,2021-10-15,01:00:02, docker容器中挂载的目录没有权限的问题
使用docker-compose,启动的容器默认是用的root权限,但是docker中的root只是相当于普通用户
所以需要给挂载的目录或者文件开启权限,代码如下:
#,广西-南宁-中国电信,2021-10-15,01:01:23, 网站目录也就是 server 中的 root指定目录对吧,也就是web目录。
nginx好像没有什么应用会对web目录定入东西,
如果是nignx的缓存目录,可以把目录用户权限改成与nginx.conf配置中的user一样
如我的 nignx.conf 中
user www;
把缓存目录用户权限修改为 www
chown www fastcgi_cache
docker run --name docker_nginx -d -p 80:80 \
-v /home/test/nginx/log:/var/log/nginx \
-v /home/test/nginx/conf:/etc/nginx/conf.d \
-v /home/test/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/test/nginx/html:/usr/share/nginx/html nginx
###
第一个-v:挂载日志目录
第二个-v:挂载配置目录
第三个-v:挂载主配置文件
第四个-v:挂载项目目录
Run code
Cut to clipboard
docker container update --restart=always 容器名字
Run code
Cut to clipboard
首先主机中执行docker exec -it <容器名 or id> /bin/bash进入容器的命令行
#主机中
#如果之前启用了gd,需要先在php.ini文件中注释掉extension=gd.so并重启容器
docker exec -it <容器ID或容器名称> /bin/bash #进入php容器
Run code
Cut to clipboard
#容器中
#echo "deb http://mirrors.163.com/debian/ stretch main contrib non-free\ndeb http://mirrors.163.com/debian/ stretch-updates main contrib non-free\ndeb http://mirrors.163.com/debian/ stretch-backports main contrib non-free" > /etc/apt/sources.list #软件源修改为网易镜像站源
apt update #更新软件源
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev #安装各种库
docker-php-source extract #解压源码
cd /usr/src/php/ext/gd #gd源码文件夹
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2 #准备编译
docker-php-ext-install gd #编译安装
make & make install #安装编译
php -m | grep gd
#重启容器
Run code
Cut to clipboard
在php.ini配置文件中直接加入extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd.so就行了
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20151012/gd.so
Run code
Cut to clipboard
使用docker-compose,启动的容器默认是用的root权限,但是docker中的root只是相当于普通用户
所以需要给挂载的目录或者文件开启权限,代码如下:
#开启目录权限
chmod -R a+rwx /home/user/
#开启docker挂载权限
chmod a+rw /var/run/docker.sock
Run code
Cut to clipboard
nginx好像没有什么应用会对web目录定入东西,
如果是nignx的缓存目录,可以把目录用户权限改成与nginx.conf配置中的user一样
如我的 nignx.conf 中
user www;
把缓存目录用户权限修改为 www
chown www fastcgi_cache
文章:Easyswoole学习笔记 发表时间:2021-10-14, 15:29:14
#235
展开↯#237
作者:广西南宁市
tp 调用其他控制器
$media = new Media($this->app);
$getBroadcastInfoUrl = $media->getBroadcastInfoUrl($content->media_id);
Run code
Cut to clipboard
文章:html模拟手机页面 发表时间:2021-08-25, 18:37:43
#238
作者:广西南宁市
<!DOCTYPE html>
<html>
<head>
<title>内容演示</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="format-detection" content="telephone=no" />
<style>
*{color: #fff;padding: 0px;margin: 0px;border: 0px;}
img{max-width: 100%;}
</style>
</head>
<body>
{$content|raw|htmlspecialchars_decode}
</body>
</html>
Run code
Cut to clipboard
文章:html模拟手机页面 发表时间:2021-08-25, 18:33:28
#239
作者:广西南宁市
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>内容预览</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
</head>
<body class="docs-home" ontouchstart="">
<style type="text/css">
@media (min-width: 850px){
.docs-home .phone{
/*margin: 0px 0px;*/
margin: 10px auto !important;
}
.phone:before {
content: '';
width: 60px;
height: 10px;
border-radius: 10px;
position: absolute;
left:50%;
margin-left: -30px;
background:#333;
top: 50px;
}
.phone .statusbar {
position: absolute;
width: 320px;
height: 20px;
background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAAoCAIAAADhf9zeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REEyN0EzRUU1QzM3MTFFNEE1ODA5RkNEOEU4MEU4ODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REEyN0EzRUY1QzM3MTFFNEE1ODA5RkNEOEU4MEU4ODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTI3QTNFQzVDMzcxMUU0QTU4MDlGQ0Q4RTgwRTg4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTI3QTNFRDVDMzcxMUU0QTU4MDlGQ0Q4RTgwRTg4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuHAU7gAAA6nSURBVHja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');
left: 50%;
margin-left: -160px;
top: 100px;
-webkit-background-size: 100% auto;
background-size: 100% auto;
}
.phone:after {
content: '';
position: absolute;
width: 60px;
height: 60px;
left: 50%;
margin-left: -30px;
bottom: 20px;
border-radius: 100%;
box-sizing: border-box;
border: 5px solid #333;
}
}
.phone{
background: #111;
border-radius: 0px;
box-shadow: none;
width: 100%;
height: 568px;
padding: 0;
}
.docs-home.mui-ios .phone .statusbar,.docs-home.mui-android .phone .statusbar,.docs-home.mui-ios .phone:before,.docs-home.mui-ios .phone:after{
display: none;
}
.phone {
margin: 0 auto;
position: relative;
background: #111;
border-radius: 55px;
box-shadow: 0px 0px 0px 2px #aaa;
width: 320px;
height: 568px;
padding: 105px 25px;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
.phone iframe {
width: 320px;
height: 100%;
display: block;
width: 100%;
margin-top: 20px;
}
</style>
<div class="docs-header">
<div style="max-width:1024px;margin:0 auto;">
<div class="phone">
<iframe src="" frameborder="0" scrolling="yes" id="myframe"></iframe>
<div class="statusbar"></div>
</div>
</div>
</div>
<script>
document.getElementById("myframe").src=getQueryVariable('uf');
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
</script>
</body>
</html>
Run code
Cut to clipboard
文章:html模拟手机页面 发表时间:2021-08-25, 18:33:16
#240
作者:广西南宁市
//返回文章内容
public function rHtml(){
$param = $this->request->param();
if(isset($param['id']) && $param['id']) $id=$param['id'];
else exit('no id');
$content=ArticlesModel::find($id);
// 模板输出并变量赋值
return View::fetch('runhtml', [
'content' => $content->content
]);
}
public function runM(){
return View::fetch('runM');
}
Run code
Cut to clipboard
文章:html模拟手机页面 发表时间:2021-08-25, 18:32:46
#242
作者:广西南宁市
bat运行node,bat npm,bat预先 vue编译,npm run dev
cd/
e:
cd Php-project\jxt\view\group
npm run dev
pause
Run code
Cut to clipboard
文章:linux安装nodejs 发表时间:2021-08-18, 18:00:46
#243
作者:广西南宁市
bat 进入指定目录
cd/
e:
cd test1/test2
Run code
Cut to clipboard
文章:linux安装nodejs 发表时间:2021-08-18, 18:00:00
#244
作者:广西南宁市
上传进度显示:
<el-upload class="avatar-uploader el-upload--text" :action="uploadUrl" :show-file-list="false" :on-success="handleVideoSuccess" :before-upload="beforeUploadVideo" :on-progress="uploadVideoProcess">
Run code
Cut to clipboard
uploadVideoProcess(event, file, fileList){
this.videoFlag = true;
this.videoUploadPercent = file.percentage.toFixed(0);
},
Run code
Cut to clipboard
文章:vue+element-ui中上传文件使用Progress自定义实时更新进度条 发表时间:2021-08-18, 17:59:18
#245
作者:广西南宁市
<el-upload
class="upload-demo"
action="#"
ref="upimg"
:on-success="handleAvatarSuccess"
:on-progress="uploadVideoProcess"
:http-request="httpRequestLogo"
:limit="1"
>
<el-button size="mini" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
</el-upload>
Run code
Cut to clipboard
handleAvatarSuccess(res, file) {
//console.log(213);
// this.myData= file;
this.$refs.upimg.clearFiles(); //上传成功之后清除历史记录
//this.handleInitTableData(); //初始化表格数据
},
/*uploadVideoProcess(event, file, fileList){
console.log(file.percentage.toFixed(0));
},*/
// 图片上传
httpRequestLogo(file) {
if('' === this.categoryprice) {
return this.$message.error('请选择图片分类')
}
let formdata = new FormData()
formdata.append('file',file.file)
formdata.append('name',file.file.name)
formdata.append('categoryId', this.categoryprice)
this.loading=true;
const config = {
onUploadProgress: progressEvent => {
// progressEvent.loaded:已上传文件大小
// progressEvent.total:被上传文件的总大小
let progressPercent = Number((progressEvent.loaded / progressEvent.total * 100).toFixed(2))
if(progressPercent>99) this.loading=false;
this.progressPercent=progressPercent;
//console.log(progressPercent);
}
}
this.$http.post('/image/upload', formdata,config).then(({ data: res }) => {
console.log(res)
if(1 !== res.code) {
return this.$message.error(res.msg)
}
this.$message.success('上传成功')
this.handleAvatarSuccess()
this.getDataList()
})
},
Run code
Cut to clipboard
文章:vue+element-ui中上传文件使用Progress自定义实时更新进度条 发表时间:2021-08-18, 17:58:20
#246
作者:广西南宁市
设置权限
chmod 777 项目文件夹/node_modules/.bin/vue-cli-service
Run code
Cut to clipboard
文章:linux安装nodejs 发表时间:2021-08-17, 15:53:33
#247
作者:广西南宁市
<!--配置文件
value: //编辑器内容
config:{
eddc:{
//其他
},
toolbars:[ //工具栏]
}
editorNum: 1 //编辑器编号
width: 75%
width1: 380px
-->
<template>
<!--<script id="editor" type="text/plain"></script>-->
<div>
<div :id="'editor'+editorNum"></div>
<JxtPicture
:exhibition="exhibition"
@close="onClose"
:title="'图片管理'"
@getImg="getImg"
:width="'75%'"
:width1="'380px'"
:priceLength="10000"
v-if="exhibition"
></JxtPicture>
</div>
</template>
<script>
import JxtPicture from '../components/jxt-picture.vue'
export default {
name: 'ue1',
components: {
JxtPicture
},
props: {
editorNum:{
type: Number,
default:1 //编辑器编号
},
value: {
type: String,
default: '',
required: false
},
config: {
type: Object,
default: {
eddc:{},
toolbars:[]
},
required: false
},
},
data() {
return {
exhibition:false,
editor: null,
instance: null,
//texta: 333,
configd:this.config,
eddc:{
initialFrameWidth:null ,//宽度随浏览器自适应
wordCount: false, //关闭字数统计
elementPathEnabled : false,//隐藏元素路径
autoHeightEnabled: true,//是否自动长高
autoFloatEnabled: true,//是否保持toolbar的位置不动
initialFrameHeight: 360,
},
toolbars: [[
'source', //源代码
//'anchor', //锚点
'undo', //撤销
'redo', //重做
'|',
'forecolor', //字体颜色
'backcolor', //背景色
'bold', //加粗
//'indent', //首行缩进
//'snapscreen', //截图
'italic', //斜体
'underline', //下划线
'strikethrough', //删除线
'subscript', //下标
'fontborder', //字符边框
'superscript', //上标
'|',
'formatmatch', //格式刷
//'blockquote', //引用
'pasteplain', //纯文本粘贴模式
'selectall', //全选
//'print', //打印
//'preview', //预览
'horizontal', //分隔线
'removeformat', //清除格式
'|',
//'time', //时间
//'date', //日期
//'unlink', //取消链接
'insertrow', //前插入行
'insertcol', //前插入列
'mergeright', //右合并单元格
'mergedown', //下合并单元格
'deleterow', //删除行
'deletecol', //删除列
'splittorows', //拆分成行
'splittocols', //拆分成列
'splittocells', //完全拆分单元格
'deletecaption', //删除表格标题
'inserttitle', //插入标题
'mergecells', //合并多个单元格
'deletetable', //删除表格
'cleardoc', //清空文档
//'insertparagraphbeforetable', //"表格前插入行"
//'insertcode', //代码语言
//'fontfamily', //字体
'|',
'fontsize', //字号
'paragraph', //段落格式
//'simpleupload', //单图上传
//'insertimage', //多图上传
//'edittable', //表格属性
//'edittd', //单元格属性
//'link', //超链接
//'emotion', //表情
//'spechars', //特殊字符
//'searchreplace', //查询替换
//'map', //Baidu地图
//'gmap', //Google地图
//'insertvideo', //视频
//'help', //帮助
'|',
'justifyleft', //居左对齐
'justifyright', //居右对齐
'justifycenter', //居中对齐
'justifyjustify', //两端对齐
'|',
'insertorderedlist', //有序列表
'insertunorderedlist', //无序列表
//'directionalityltr', //从左向右输入
//'directionalityrtl', //从右向左输入
//'rowspacingtop', //段前距
//'rowspacingbottom', //段后距
'pagebreak', //分页
'insertframe', //插入Iframe
'|',
'imagenone', //默认
'imageleft', //左浮动
'imageright', //右浮动
//'attachment', //附件
'imagecenter', //居中
//'wordimage', //图片转存
'lineheight', //行间距
//'edittip ', //编辑提示
//'customstyle', //自定义标题
//'autotypeset', //自动排版
//'webapp', //百度应用
//'touppercase', //字母大写
//'tolowercase', //字母小写
//'background', //背景
//'template', //模板
//'scrawl', //涂鸦
//'music', //音乐
'inserttable', //插入表格
//'drafts', // 从草稿箱加载
'charts', // 图表
'|',
'fullscreen', //全屏
'macros', // 自定义上传
]]
}
},
watch: {
value: {
handler: function(val, oldVal) {
this.editor = window.UE.getEditor('editor'+this.editorNum, this.configd);
this.editor.setContent(val);
}
}
},
mounted () {
let config=this.config;
//console.log(config.eddc);return false;
let eddc=config.eddc && Object.keys(config.eddc).length!=0?config.eddc:this.eddc
let toolbars=config.toolbars
&& config.toolbars.length
&& config.toolbars[0]
&& config.toolbars[0].length
?config.toolbars:this.toolbars
//console.log(eddc);
eddc.toolbars=toolbars;
console.log(eddc)
this.configd=eddc;
this.$nextTick(() => {
const _this = this
this.editor = window.UE.getEditor('editor'+this.editorNum, this.configd);
this.editor.addListener('ready', function () {
_this.editor.setContent(_this.value)
})
this.editor.commands['macros'] = {
execCommand : () => {
this.beforeInsertImage()
},
queryCommandState: function(){
}
}
})
},
methods: {
onClose() {
this.exhibition = false
},
getUEContent () {
return this.editor.getContent()
},
beforeInsertImage() {
//this.$emit('showModal', { editor: 'editor' })
//console.log(e)
this.exhibition = true
//this.priceLength = 10000
},
getImg(e) {
let UE = this.editor
e.forEach(item => {
UE.execCommand('insertHtml', `<img src=${item.org_img}>`)
})
},
},
destroyed () {
this.editor.destroy()
}
}
</script>
<style lang="scss" scoped>
/*#editor {
width: 90vh;
}*/
</style>
Run code
Cut to clipboard
文章:百度Ueditor编辑器宽度高度自适应 发表时间:2021-08-17, 09:27:37
Warning: fopen(): open_basedir restriction in effect. File(/data/sbin/logs/TLog/Tlog.800.0_20200107...错误
关闭防跨站攻击(open_basedir),把钩去掉,重启php服务,即可!