macos停用自带apache
MACOS
自带软件关闭
sudo apachectl -k stop
MACOS
自带软件关闭sudo apachectl -k stop
http://open-doc.dingtalk.com/microapp/serverapi2/vzzrkv
中下载PHP
版本SDK
。解压后文件目录如图:dingtalk
中的文件,删除aliyun、QimenCloud
目录,保留top
目录Autoloader.php
和TopSdk.php
文件。composer.json
中:"autoload": {
"classmap": [
"database"
],
"files":[
"app/Packages/taobao/TopSdk.php"
],
"psr-4": {
"App\\": "app/"
}
}
composer dump-autoload
Controller
中就可以直接使用DingTalk SDK
了。测试结果如下(注意要加‘ \ ’):object(DingTalkClient)#276 (9) { ["gatewayUrl"]=> string(34) "http://eco.taobao.com/router/rest" ["format"]=> string(4) "json" ["connectTimeout"]=> NULL ["readTimeout"]=> NULL ["apiCallType"]=> string(4) "oapi" ["httpMethod"]=> string(4) "POST" ["checkRequest"]=> bool(true) ["apiVersion":protected]=> string(3) "2.0" ["sdkVersion":protected]=> string(25) "dingtalk-sdk-php-20161214" }
本文转载:https://blog.csdn.net/xiaoweite1/article/details/106175892
Not Found The requested URL
解决在public
下的.htaccess
文件增加:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
1、php artisan storage:link
但需要在cmd
下操作,这时需要在“我的电脑”里增加path
环境变量。
如下图,找到php
对应的目录(如:php.exe
所在目录),即:E:\phpstudy\Extensions\php\php7.4.3nts
;
2、找到“我的电脑”的环境变量增加,如下图:
3、接下来就可以在cmd
下执行相关操作了,如下:
配置信息缓存 artisan config:cache
路由缓存 artisan route:cache
类映射加载优化 artisan optimize
自动加载优化 composer dumpautoload
使用 Memcached 来存储会话 config/session.php
使用专业缓存驱动器 config/cache.php
数据库请求优化
为数据集书写缓存逻辑
使用即时编译器(JIT),如:HHVM
开启 OpCache
前端资源合并 Elixir
更多优化见:https://learnku.com/laravel/t/47213
composer.json
对应的是composer update
composer.lock
对应的是composer install
,
注意:没有.lock
文件composer
就执行.json
文件;
1、可以将 Composer
降级到 1.x
版,操作如下:
composer self-update --1
2、如果您需要切换回 Composer
2.x
版,只需键入:
composer self-update --2
3、更多信息https://5balloons.info/fix-you-are-using-composer-2-some-plugins-seem-to-be-incompatible-with/
收藏:https://github.com/ar414-com/php-source-lib
转载:https://shockerli.net/post/php-awesome/
转载:https://blog.csdn.net/xiaoweite1/article/details/106175892
HTML
视图<div style="display: none;text-align: center"><button type="button" class="layui-btn" id="picker">选择图片</button></div>
JS
代码tableSelect.render({
elem: '#picker',
checkedKey: 'id',
searchKey: 'original_name',
searchPlaceholder: '文件源名称',
height:'300',
width:'800',
table: {
url: '/manage/uploads/show',
cols: [[
{ type: 'radio' },
{ field: 'path', title: '缩略图', width:100, templet:'#row-file' },
{ field: 'original_name', title: '文件名' },
{ field: 'path', title: '文件地址' },
{ field: 'extension', width:100, title: '文件类型' },
]]
},
done: function (elem, data) {
//console.log(data);
let NEWJSON = [];
layui.each(data.data, function (index, item) {
NEWJSON.push(item.path)
});
let template = '<img src="/storage/' + NEWJSON.join(',') + '">';
let categoryId = data.data[0].category_id;
if(categoryId == 3) {
template = '<a href="/storage/' + NEWJSON.join(',') + '">'+ data.data[0].original_name +'</a>';
}
if(categoryId == 4) {
template = '<video src="/storage/' + NEWJSON.join(',') + '" controls="controls"></video>';
}
tinyMCE.editors[0].insertContent(template);
}
});
tableSelect
扩展layui.use(['form', 'jquery', 'tinymce', 'tableSelect'], function() {
let form = layui.form;
let $ = layui.jquery;
let tableSelect = layui.tableSelect;
tableSelect.render({
elem: '#picIcon',
checkedKey: 'id',
searchKey: 'original_name',
searchPlaceholder: '文件源名称',
height:'300',
width:'800',
table: {
url: '/manage/uploads/show',
cols: [[
{ type: 'radio' },
{ field: 'path', title: '缩略图', width:100, templet:'#row-file' },
{ field: 'original_name', title: '文件名' },
{ field: 'path', title: '文件地址' },
{ field: 'extension', width:100, title: '文件类型' },
]]
},
done: function (elem, data) {
let NEWJSON = []
layui.each(data.data, function (index, item) {
NEWJSON.push(item.path)
})
//elem.val(NEWJSON.join(","));
$('#icon').val(NEWJSON.join(","))
}
});
});
TinyMCE
代码tinymce.init({
selector: '#content',
language:'zh_CN',
height:450,
toolbar: 'filemanager',
setup: function (editor) {
editor.ui.registry.addButton('filemanager', { //这里的filemanager与上面toolabar中定义filemanger对应
title: '文件选择',
icon: 'duplicate',
onAction: function () {
$("#picker").click();
//editor.windowManager.openUrl({
//title: '文件选择器',
//url: '/manage/picker',
//height: 400,
//width: 800
//});
}
})
},
});