#229
展开↯#231
作者:广西南宁市
此图片来自微信公众平台 未经允许不可引用
<meta name="referrer" content="never">
<meta data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
Run code
Cut to clipboard
文章:微信端iphone使用video标签播放不了视频 发表时间:2021-10-25, 18:04:27
#232
作者:广西南宁市
宝塔打开网站后报Warning: require(): open_basedir restriction in effect解决方案
Warning: fopen(): open_basedir restriction in effect. File(/data/sbin/logs/TLog/Tlog.800.0_20200107...错误
关闭防跨站攻击(open_basedir),把钩去掉,重启php服务,即可!
Warning: fopen(): open_basedir restriction in effect. File(/data/sbin/logs/TLog/Tlog.800.0_20200107...错误
关闭防跨站攻击(open_basedir),把钩去掉,重启php服务,即可!
文章:docker: Error response from daemon: status code not OK but 500 发表时间:2021-10-23, 17:50:01
#233
作者:广西南宁市
启动容器挂载到本地相关配置文件: #,广西南宁市,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
#238
展开↯#240
作者:广西南宁市
tp 调用其他控制器
$media = new Media($this->app);
$getBroadcastInfoUrl = $media->getBroadcastInfoUrl($content->media_id);
Run code
Cut to clipboard
文章:html模拟手机页面 发表时间:2021-08-25, 18:37:43
#241
作者:广西南宁市
<!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
#242
作者:广西南宁市
<!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
#243
作者:广西南宁市
//返回文章内容
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
#245
作者:广西南宁市
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
#246
作者:广西南宁市
bat 进入指定目录
cd/
e:
cd test1/test2
Run code
Cut to clipboard
文章:linux安装nodejs 发表时间:2021-08-18, 18:00:00
#247
作者:广西南宁市
上传进度显示:
<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
这个方法其实很简单,用到了linux命令find来遍历文件
find . | xargs svn add --force *.* svn ci -m "add demo*****"