首页
时事
归档
壁纸
更多
留言
关于
邻里
Search
1
使用必应Bing每日图片做网站背景(自动)
2,810 阅读
2
vue的输入值校验规则整理
1,443 阅读
3
好站推荐-https://wangchujiang.com/linux-command/
1,391 阅读
4
微信支付开发前准备(小程序、公众号、App、H5)
1,391 阅读
5
VUE `ERR_CONNECTION_TIMED_OUT`的解决办法
1,321 阅读
文章
图说
代码
吐槽
登录
Search
标签搜索
Linux
laravel
windows
TYPO3
php
shell脚本
git
微信
好站
vue
第三方登录
centos
linxu
centos7
thinkPHP
微信支付
api
MySQL
桌面
必应首图
Beer
累计撰写
114
篇文章
累计收到
21
条评论
首页
栏目
文章
图说
代码
吐槽
页面
时事
归档
壁纸
留言
关于
邻里
搜索到
90
篇与
文章
的结果
2021-02-07
Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
Laravel php artisan 自动生成Model+Migrate+Controller 命令大全php artisan 命令是Laravel框架自带的命令,方便用户快速创建、查看对应的模块参数等。一、常用的命令:命令解释php artisan list 查看php artisan所有命令php artisan --help查看php artisan的用法php artisan help admin:make查看php artisan admin:make的用法php artisan admin:make --help查看php artisan admin:make的用法创建控制器php artisan make:controller OrderController创建Rest风格资源控制器(带有index、create、store、edit、update、destroy、show方法)php artisan make:controller OrderController --resource创建模型php artisan make:model Student创建新建表的迁移和修改表的迁移php artisan make:migration create_orders_table --create=orders //创建订单表ordersphp artisan make:migration add_tags_to_orders_table --table=orders//给orders表增加tags字段执行迁移php artisan migrate创建模型的时候同时生成新建表的迁移+控制器+路由php artisan make:model Order -m -c -r回滚上一次的迁移php artisan migrate:rollback回滚所有迁移php artisan migrate:reset创建填充php artisan make:seeder OrderTableSeeder执行单个填充php artisan db:seed --class=OrderTableSeeder执行所有填充php artisan db:seed创建中间件(app/Http/Middleware 下)php artisan make:middleware Activity创建队列(数据库)的表迁移(需要执行迁移才生效)php artisan queue:table创建队列类(app/jobs下):php artisan make:job SendEmail创建请求类(app/Http/Requests下)php artisan make:request CreateArticleRequest二、通常一个laravel项目的后台管理系统搭建流程,如下下载Laravel框架,安装Laravel-admin后台管理框架,进行基础的数据库连接配置,上传配置,https/http访问方式等Linux服务器下面,进入项目的根目录,可以用php artisan make命令创建模型+数据迁移+控制器。用php artisan admin:make 创建后台的控制器,可以写脚本批量创建。之后根据业务逻辑,编写控制器内容。为后台的控制器创建对于的路由,可以写脚本批量创建。登录Laravel-admin后台系统,设置对应的菜单。三、Laravel Artisan 命令大全Available commands:命令中文Englishclear-compiled删除已编译的类文件Remove the compiled class filedown将应用程序置于维护模式Put the application into maintenance modedump-server启动转储服务器以收集转储信息。Start the dump server to collect dump information.env显示当前的框架环境Display the current framework environmenthelp显示命令的帮助Displays help for a commandinspire---Display an inspiring quotelist列出命令Lists commandsmigrate运行数据库迁移Run the database migrationsoptimize缓存框架引导程序文件Cache the framework bootstrap filespreset为应用程序交换前端脚手架Swap the front-end scaffolding for the applicationserve在 PHP 开发服务器上提供应用程序Serve the application on the PHP development servertinker与您的应用程序互动Interact with your applicationup使应用程序退出维护模式Bring the application out of maintenance modeapp命令中文Englishapp:name设置应用程序命名空间Set the application namespaceauth命令中文Englishauth:clear-resets刷新过期的密码重置令牌Flush expired password reset tokenscache命令中文Englishcache:clear刷新应用程序缓存Flush the application cachecache:forget从缓存中删除项目Remove an item from the cachecache:table为缓存数据库表创建迁移Create a migration for the cache database tableconfig命令中文Englishconfig:cache创建缓存文件以加快配置速度Create a cache file for faster configuration loadingconfig:clear删除配置缓存文件Remove the configuration cache filedb命令中文Englishdb:seed填充数据库Seed the database with recordsevent命令中文Englishevent:generate根据注册生成缺少的事件和侦听器Generate the missing events and listeners based on registrationkey命令中文Englishkey:generate生成应用程序 keySet the application keylang命令中文Englishlang:publish将语言文件发布到资源目录publish language files to resources directory.make命令中文Englishmake:auth---Scaffold basic login and registration views and routesmake:channel创建一个新的 channel 类Create a new channel classmake:command创建一个新的 Artisan 命令Create a new Artisan commandmake:controller创建一个新的控制器类Create a new controller classmake:event---创建一个新的 event 类make:exception创建一个新的自定义异常类Create a new custom exception classmake:factory创建一个新的模型工厂Create a new model factorymake:job创建一个新的工作类Create a new job classmake:listener创建一个新的事件监听器类Create a new event listener classmake:mail创建一个新的电子邮件类Create a new email classmake:middleware创建一个新的中间件类Create a new middleware classmake:migration创建一个新的迁移文件Create a new migration filemake:model创建一个新的 Eloquent 模型类Create a new Eloquent model classmake:notification创建一个新的通知类Create a new notification classmake:observer创建一个新的观察者类Create a new observer classmake:policy创建一个新的策略类Create a new policy classmake:provider创建一个新的服务提供者类Create a new service provider classmake:request创建一个新的表单请求类Create a new form request classmake:resource创建一个新资源Create a new resourcemake:rule创建新的验证规则Create a new validation rulemake:scaffold代码生成器 — Laravel 5.x Scaffold GeneratorCreate a laralib scaffoldmake:seeder创建一个新的 seeder 类Create a new seeder classmake:test创建一个新的测试类Create a new test classmigrate命令中文Englishmigrate:fresh删除所有表并重新运行所有迁移Drop all tables and re-run all migrationsmigrate:install创建迁移存储库Create the migration repositorymigrate:refresh重置并重新运行所有迁移Reset and re-run all migrationsmigrate:reset回滚所有数据库迁移Rollback all database migrationsmigrate:rollback回滚上次数据库迁移Rollback the last database migrationmigrate:status显示每次迁移的状态Show the status of each migrationnotifications命令中文Englishnotifications:table为通知表创建迁移Create a migration for the notifications tableoptimize命令中文Englishoptimize:clear删除缓存的引导程序文件Remove the cached bootstrap filespackage命令中文Englishpackage:discover重建缓存的包清单Rebuild the cached package manifestqueue命令中文Englishqueue:failed列出所有 failed 队列工作List all of the failed queue jobsqueue:failed-table为 failed 队列工作数据库表创建迁移Create a migration for the failed queue jobs database tablequeue:flush刷新所有 failed 队列工作Flush all of the failed queue jobsqueue:forget删除 failed 队列工作Delete a failed queue jobqueue:listen监听一个给定的队列Listen to a given queuequeue:restart在当前工作之后重新启动队列工作器守护程序Restart queue worker daemons after their current jobqueue:retry重试 failed 队列作业Retry a failed queue jobqueue:table为队列工作数据库表创建迁移Create a migration for the queue jobs database tablequeue:work开始将队列上的工作作为守护程序处理Start processing jobs on the queue as a daemonroute命令中文Englishroute:cache创建路由缓存文件以加快路由注册速度Create a route cache file for faster route registrationroute:clear删除路由缓存文件Remove the route cache fileroute:list列出所有注册的路由List all registered routesschedule命令中文Englishschedule:run运行预定的命令Run the scheduled commandssession命令中文Englishsession:table为会话数据库表创建迁移Create a migration for the session database tablestorage命令中文Englishstorage:link创建从 “公共 / 存储” 到 “存储 / 应用 / 公共” 的符号链接Create a symbolic link from "public/storage" to "storage/app/public"vendor命令中文Englishvendor:publish从供应商包中发布任何可发布的资产Publish any publishable assets from vendor packagesview命令中文Englishview:cache编译所有应用程序的 Blade 模板Compile all of the application's Blade templatesview:clear清除所有编译的视图文件Clear all compiled view files
2021年02月07日
707 阅读
0 评论
0 点赞
2021-02-07
网站开始支持HTTP/2
HTTP2的优势HTTP1.x在当代长肥网络环境(高带宽高延时)下面临以下问题:处理的单个请求资源越来越大,而单连接只能串行请求(同个连接只能完成一个http请求后才能处理下个请求),无法并发处理。请求体需要携带完整的巨大的头部,才能保持请求无状态? 背负众望的HTTP2终于在2015年5月的RFC7540推出,HTTP2基于tcp协议,且仅在应用层变动。最大的特点就是多路复用,并以二进制方式并压缩报文,传输量大幅度减少,还能实现服务器消息推送(类似websocket)等强大功能,老的scheme不会变,不会出现 http2:// 这样的网址,而是沿用 http://,因此对客户端而言,兼容性很高,而且对于现代浏览器来说,使用HTTP2打开网站比http1.x 更快。快速开启HTTP2(nginx)如果网站使用nginx作为前置代理的,并且使用了HTTPS,那么为你的网站开启HTTP2是非常简单的。需要保证拥有以下基础环境:Nginx版本不低于1.9.5版本OpenSSL版本不低于1.0.2版本满足以上条件,只要在你的nginx配置文件里,更新一行配置就可以开启HTTP2:server { # 添加 http2 listen 443 ssl http2; ... }重启你的nginx服务,或 nginx -s reload 即刻生效。检测是否已开启HTTP2直接点,分享一个在线检测工具 https://www.dute.org/http2
2021年02月07日
539 阅读
0 评论
0 点赞
2021-02-05
centos7在线yum安装mysql5.7时官方镜像下载过慢的解决方案
安装mysql源mysql5.7yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm yum repolist enabled | grep "mysql.*-community.*"安装mysqlyum -y install mysql-community-server install mysql-community-devel在这一步安装时执行非常慢,然后找了下解决方案,一种是下载离线安装包进行安装一种是代替命令在镜像站下载源码放到MySQL源码目录中进行在线安装 (个人倾向这种,所以分享下)代下载安装Ctrl+'c'退出安装程序,然后进入到yum下载缓存目录,到镜像站找到下载链接 直接wget进行下载# 进入缓存目录 cd /var/cache/yum/x86_64/7/mysql57-community/packages/ # 删除自动下载的包 rm -rf mysql-community-server-5.7.33-1.el7.x86_64.rpm # 下载安装包 wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-community-server-5.7.33-1.el7.x86_64.rpm # 重新执行命令下载 yum -y install mysql-community-server install mysql-community-devel启动mysqlservice mysqld start检查mysql启动是否正常service mysqld status 或者 ps -ef | grep mysql设置mysqld服务开机自启动systemctl enable mysqld.service检查mysqld开机自启动是否设置成功systemctl list-dependencies | grep mysqldmysql5.7以后的争强了安全机制, 所以使用yum安装,启动会系统会自动生成一个随机的密码,修改mysql密码查看mysql的随机密码grep 'temporary password' /var/log/mysqld.log使用查询得到的随机密码在终端登录mysql -u root -p # 更改密码(mysql文档规定,密码必须包括大小写字母数字加特殊符号>8位) ALTER USER 'root'@'localhost' IDENTIFIED BY 'Yourpassword'; exit附: 国内镜像站:http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/http://uni.mirrors.163.com/mysql/Downloads/
2021年02月05日
570 阅读
1 评论
0 点赞
2021-02-01
php单页面实现密码访问(typecho可用)
前言喜讯:&(蛆音娘_大笑) 我的宝贝快要出生了:@(脸红) 所以我在博客中加了个相册的单页 用来存放我的大宝贝和小宝贝的生活点滴,但是为了家人们的信息安全 我需要设置个只有我们知道的密码进行访问代码<?php //密码访问本页面 $password = "20200106";//密码 $p = ""; if(isset($_COOKIE["isview"]) and $_COOKIE["isview"] == $password){ $isview = true; }else{ if(isset($_POST["pwd"])){ if($_POST["pwd"] == $password){ setcookie("isview",$_POST["pwd"],time()+60);$isview = true;}else{$p = (empty($_POST["pwd"])) ?"请输入密码." : "<div style=\"color:#F00;\">密码不正确.</div>";} }else{ $isview = false;$p = "此页面加密访问请输入密码。"; }}?> <?php if($isview){?> <!-- html模板加载开始 --> <!DOCTYPE HTML> <html> 输入密码后正常显示的内容 </html> <!-- html模板加载结束 --> <?php }else{?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title><?php echo $p;?>!</title> <style type="text/css"> body{background-image: url(https://cdn.jsdelivr.net/gh/WHBLeer/Gallery@master/img/20210128092033.jfif);} .passport{background-color:rgba(255, 255, 255, 0.5);width:400px;height:100px;position:absolute;left:49.9%;top:49.9%;margin-left:-200px;margin-top:-55px;font-size:14px;text-align:center;line-height:30px;color:#746A6A;} input {padding: 7px;text-align: center;border-radius: 5px;} .tips {background-color:rgba(255, 0, 0, 0.3);color: #fff;text-align: center;padding: 2px 16px;font-size: 15px;} </style> </head> <body> <div class="passport"> <div style="padding-top:20px;"> <form action="" method="post" style="margin:0px;"> <input type="password" name="pwd" /> <input type="submit" value="确定" /> </form> <span class="tips"><?php echo $p;?></span> </div> </div> </body> </html> <?php }?>次页面适用于所有php加载html的页面
2021年02月01日
536 阅读
0 评论
0 点赞
2021-01-28
TYPO3功能API解析 - GeneralUtility
API介绍这个API是基于TYPO3,且只能使用在TYPO3-CMS中的功能性辅助函数集合,它将PHP的功能函数做了优化,使得这些函数搭配TYPO3使用更方便,更简单,更准确。可以说是TYPO3开发中的必要工具。该API在TYPO3-CMS中的位置:(项目根目录)/typo3/sysext/core/Classes/Utility/GeneralUtility.php。使用方法方法1:该API不需要实例化就可以使用。使用 \TYPO3\CMS\Core\Utility\GeneralUtility:: 型的函数名前缀就可以调用成功。eg. :\TYPO3\CMS\Core\Utility\GeneralUtility::milliseconds(); //获取unix毫秒时间戳。;eg. :\TYPO3\CMS\Core\Utility\GeneralUtility::_GET(); //获取GET提交数据。;方法2:使用 use 导入该API的命名空间后进行使用。使用 在类(class)的上方,use TYPO3\CMS\Core\Utility\GeneralUtility 就可以在类中直接调用成功了。eg. :GeneralUtility::milliseconds(); //获取unix毫秒时间戳。;eg. :GeneralUtility::_GET(); //获取GET提交数据。;详细1、GET/POST 变量 //返回指定变量的 $_GET/$_POST 数据 public static function _GP($var) //返回指定变量 $_GET和$_POST合并数据集,$_POST优先。 public static function _GPmerged($parameter) //返回指定变量的 $_GET 数据 public static function _GET($var = null) //返回指定变量的 $_POST 数据 public static function _POST($var = null)2、字符串处理 //兼容中文的字符串截断和拼接 public static function fixed_lgd_cs($string, $chars, $appendString = '...') //验证IP地址是否合法 public static function validIP($ip) //验证IPv4地址是否合法 public static function validIPv4($ip) //验证IPv6地址是否合法 public static function validIPv6($ip) //用通配符字符串匹配列表中完全合格的域名 public static function cmpFQDN($baseHost, $list) //检查给定的URL是否与当前发起HTTP请求的主机相匹配。 public static function isOnCurrentHost($url) //检查以逗号分隔的项目列表中存在的项 public static function inList($list, $item) //删除列表中的一项 public static function rmFromList($element, $list) //扩大以逗号分隔的与范围的整数列表(例如1,3-5,7变为1,3,4,5,7)。扩大范围最大为间隔的1000倍 public static function expandList($list) //从输入的md5哈希值的前7个字符中得出一个正整数哈希值 public static function md5int($str) /返回MD5hash的前$len个字符(默认为10个) public static function shortMD5($input, $len = 10) //在给定的输入字符串和TYPO3加密密钥上返回正确的HMAC。 public static function hmac($input, $additionalSecret = '') //删除使用逗号分隔的列表和数组中的所有重复项 public static function uniqueList($in_list, $secondParameter = null) //获取文件详情 [path], [file], [filebody], [fileext], [realFileext] public static function split_fileref($fileNameWithPath) //返回路径的目录部分,后面不带斜杠 public static function dirname($path) /如果$str的第一部分与字符串$partStr匹配,则返回TRUE public static function isFirstPartOfStr($str, $partStr) //文件大小格式化为人类可读数据 public static function formatSize($sizeInBytes, $labels = '', $base = 0) //简单的数学运算 /+-* // string $string 计算公式 eg "123 + 456 / 789 - 4 // string $operators 运算符 "/+-* // return array 运算符和操作数分开的数组。 public static function splitCalc($string, $operators) //验证邮箱地址是否合法 public static function validEmail($email) //字符串转为ASCII字符串(unicode) public static function idnaEncode($value) //下划线命名转为首字母大写的驼峰命名 public static function underscoredToUpperCamelCase($string) //下划线命名转为首字母小写的驼峰命名 public static function underscoredToLowerCamelCase($string) //驼峰命名转为下划线命名 public static function camelCaseToLowerCaseUnderscored($string) //验证给定链接是否合法(是否可访问) public static function isValidUrl($url) 3、数组处理 //分解由$delimiter分隔的$string并将数组中的每个项目强制转换为(int)。 public static function intExplode($delimiter, $string, $removeEmptyValues = false, $limit = 0) //解释不来,看例子:GeneralUtility::revExplode('[]', '[my][words][here]', 2) 输出:array('[my][words', 'here]') public static function revExplode($delimiter, $string, $count = 0) //把$string按照指定字符$delim转为数组,并去掉空白值 public static function trimExplode($delim, $string, $removeEmptyValues = false, $limit = 0) /数组转为Url参数 public static function implodeArrayForUrl($name, $theArray, $str = '', $skipBlank = false, $rawurlencodeParamName = false) //Url参数转为数组 public static function explodeUrl2Array($string) //返回键名为$varList列表的数组 // string $varList 变量/键名列表 // array $getArray 来源数组 // bool $GPvarAlt get/post数据作为来源数组 public static function compileSelectedGetVarsFromArray($varList, array $getArray, $GPvarAlt = true) //从ts配置文件中删除'.' public static function removeDotsFromTS(array $ts) 4、HTML/XML 处理方式 //以键值对格式返回指定html标签 public static function get_tag_attributes($tag) //数组转为HTML参数:输入eg. "bgcolor"=>"red", "border"=>0;输出eg. 'bgcolor="red" border="0"' public static function implodeAttributes(array $arr, $xhtmlSafe = false, $dontOmitBlankAttribs = false) //使用<script>标签 包装JavaScript代码XHTML public static function wrapJS($string) //XML转为树结构数组 public static function xml2tree($string, $depth = 999, $parserOptions = []) //数组转为xml public static function array2xml(array $array, $NSprefix = '', $level = 0, $docTag = 'phparray', $spaceInd = 0, array $options = [], array $stackData = []) //xml转为数组 public static function xml2array($string, $NSprefix = '', $reportDocTag = false) //压缩 JavaScript public static function minifyJavaScript($script, &$error = '') 5、FILES 处理函数 //读取文件或URL $url并返回内容 public static function getUrl($url, $includeHeader = 0, $requestHeaders = null, &$report = null) //在文件$file中写入内容$content public static function writeFile($file, $content, $changePermissions = false) //设置文件系统模式和文件或文件夹的组所有权 public static function fixPermissions($path, $recursive = false) //在文件$filepath中写入内容$content 文件存放在 typo3temp/ 目录下 public static function writeFileToTypo3tempDir($filepath, $content) //创建目录 public static function mkdir($newFolder) //创建目录-必要时包括父目录,并在新创建的目录上设置权限 public static function mkdir_deep($directory) //删除目录;递归删除子目录及文件 public static function rmdir($path, $removeNonEmpty = false) //通过首先移至临时资源,然后触发删除过程来刷新目录。这样可以更快地刷新目录,以防止在并发进程访问同一目录时出现争用情况。 public static function flushDirectory($directory, $keepOriginalDirectory = false, $flushOpcodeCache = false) /返回具有特定路径中文件夹名称的数组。如果读取目录内容时出错,将返回“错误”(字符串)。如果提供的路径为false,则将返回null public static function get_dirs($path) //查找给定路径中的所有文件,并将它们作为数组返回。每个数组键都是文件完整路径的md5哈希。这样做是因为诸如导入/导出扩展之类的“某些”扩展依赖于此。 public static function getFilesInDir($path, $extensionList = '', $prependPath = false, $order = '', $excludePattern = '') //递归查找目录中的所有文件和文件夹 public static function getAllFilesAndFoldersInPath(array $fileArr, $path, $extList = '', $regDirs = false, $recursivityLevels = 99, $excludePattern = '') //删除$fileArr中所有文件/文件夹的绝对部分 public static function removePrefixPathFromList(array $fileArr, $prefixToRemove) //修复Windows反斜杠的路径,并将双斜杠减少为单斜杠 public static function fixWindowsFilePath($theFile) //解析路径中的 "../" public static function resolveBackPath($pathStr) //返回可跳转的链接 public static function locationHeaderUrl($path) //获取最大文件上传大小(KB) public static function getMaxUploadFileSize() //(G,M,K,)转为字节 public static function getBytesFromSizeMeasurement($measurement) //文件添加静态版本号 public static function createVersionNumberedFilename($file) //将JavaScript字符串写入以该字符串的md5-hash命名的临时文件 public static function writeJavaScriptContentToTemporaryFile(string $content) //将Css字符串写入以该字符串的md5-hash命名的临时文件 public static function writeStyleSheetContentToTemporaryFile(string $content) 6、系统信息 //返回完整链接 public static function linkThisScript(array $getParams = []) //$getParams中的参数添加到$url中并返回完整链接 public static function linkThisUrl($url, array $getParams = []) //存储一个自定义变量,仅做测试用 public static function setIndpEnv($envName, $value) //获取指定参数值 SCRIPT_NAME, SCRIPT_FILENAME, REQUEST_URI, PATH_INFO, REMOTE_ADDR, REMOTE_HOST, HTTP_REFERER, HTTP_HOST, HTTP_USER_AGENT, HTTP_ACCEPT_LANGUAGE, QUERY_STRING, TYPO3_DOCUMENT_ROOT, TYPO3_HOST_ONLY, TYPO3_HOST_ONLY, TYPO3_REQUEST_HOST, TYPO3_REQUEST_URL, TYPO3_REQUEST_SCRIPT, TYPO3_REQUEST_DIR, TYPO3_SITE_URL, _ARRAY public static function getIndpEnv($getEnvName) //获取unix毫秒时间戳。 public static function milliseconds() 7、TYPO3 特殊功能函数 //解析'EXT:'为文件绝对路径 public static function getFileAbsFileName($filename) //检查恶意文件 public static function validPathStr($theFile) //检查$path是绝对路径还是相对路径(检测'/'或'x:/'作为字符串的第一部分),如果是,则返回TRUE public static function isAbsPath($path) //如果路径是绝对路径,没有反向路径".."并且在TYPO3的项目或公用文件夹中,或者在lockRootPath中,则返回TRUE public static function isAllowedAbsPath($path) //根据"fileDenyPattern"验证输入文件名。如果确定,则返回TRUE。 public static function verifyFilenameAgainstDenyPattern($filename) //递归复制目录下的所有文件和子目录 public static function copyDirectory($source, $destination) //将$source文件上传到$destination目录(如果已上传),否则尝试进行复制 public static function upload_copy_move($source, $destination) //将文件移动到临时目录 public static function upload_to_tempfile($uploadedFileName) //删除 var/ 或者 typo3temp 目录中的临时文件 public static function unlink_tempfile($uploadedTempFileName) //创建临时文件名(使用唯一的文件名创建文件) public static function tempnam($filePrefix, $fileSuffix = '') //标准身份验证代码 public static function stdAuthCode($uid_or_record, $fields = '', $codeLength = 8) //如果不存在翻译,则响应输入的本地化设置值是否应隐藏其来源页面 public static function hideIfNotTranslated($l18n_cfg_fieldValue) //如果未将“ l18n_cfg”字段值设置为隐藏,则返回true public static function hideIfDefaultLanguage($localizationConfiguration) //在类中调用用户定义的函数/方法 public static function callUserFunction($funcName, &$params, &$ref) //刷新内部运行时缓存 public static function flushInternalRuntimeCaches() //引用一个用作JS参数的字符串。 public static function quoteJSvalue($value)
2021年01月28日
565 阅读
0 评论
0 点赞
2021-01-28
CentOS7+Nginx+MariaDB+PHP7.2+composer 安装TYPO3 v9*
前言最近感觉nginx比apache好,不要问我为什么,我就是这么认为的,我也不知道为什么。。。以下所有代码均为我自己安装时的命令,按照顺序 Ctrl+c Ctrl+v 期间敲几个 yes 就完成了。注意:以下安装步骤及命令仅在全新服务器测试安装,服务器上已有数据的同僚请不要轻易试探更新系统 yum -y update安装 nginx yum install epel-release yum install nginx systemctl start nginx systemctl enable nginx安装 mariadb yum install mariadb-server mariadb systemctl start mariadb配置数据库 mysql_secure_installation systemctl enable mariadb验证数据库 mysql -uroot -p安装php yum install epel-release yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum install yum-utils yum-config-manager --enable remi-php72 yum install epel-release rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum install php72w* --skip-broken //完整安装 yum install php72-php-pecl-zip* //安装包中貌似没有包含php扩展,但是项目中必用到,建议执行安装 yum install php-pecl-zip.x86_64 //同上修改php.ini配置 sudo sed -i 's/memory_limit.*/memory_limit = 128M/g' /etc/php.ini sudo sed -i 's/upload_max_filesize.*/upload_max_filesize = 128M/g' /etc/php.ini sudo sed -i 's/post_max_size.*/post_max_size = 128M/g' /etc/php.ini sudo sed -i 's/max_execution_time.*/max_execution_time = 30000/g' /etc/php.ini sudo sed -i 's/max_input_time.*/max_input_time = 30000/g' /etc/php.ini sudo sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /etc/php.ini sudo sed -i 's/; max_input_vars.*/max_input_vars = 1500/g' /etc/php.ini systemctl start php-fpm systemctl enable php-fpm配置php vim /etc/php-fpm.d/www.conf找到以下地方进行替换 # 找到以下地方进行替换: listen.owner = nginx listen.group = nginx user = nginx group = nginx配置nginx vim /etc/nginx/nginx.conf示例: user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; index index.php index.html index.htm; server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /var/www/html; include /etc/nginx/default.d/*.conf; location / { } location ~ .php$ { try_files $uri =404; root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi.conf; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }配置虚拟主机 vim /etc/nginx/conf.d/typo3.whongbin.cn.conf注意:使用composer进行安装时,需要将虚拟主机web目录设置到项目目录中的public目录才可以,解压安装的可以直接配置到项目目录示例: server { listen 80; server_name typo3.whongbin.cn; root /var/www/html/typo3.whongbin.cn/public; location / { } location ~ .php$ { try_files $uri =404; root /var/www/html/typo3.whongbin.cn/public; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi.conf; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }重载配置 nginx -t nginx -s reload cd /var/www/html/切换用户安装 typo3 v9 useradd composer passwd composer composer config -g repo.packagist composer https://packagist.phpcomposer.com su root cd /var/www/html/my.whongbin.cn/ composer create-project typo3/cms-base-distribution typo3.whongbin.cn ^9.5 chown -R nginx:nginx /var/www/html/ chmod -R 775 /var/www/html/ cd /var/www/html/typo3.whongbin.cn/public/ & touch FIRST_INSTALL重载php服务为了保险起见,最后配置完成后把服务都重启下 service restart php-fpm nginx -s reload最后整个安装过程大概半小时左右吧,时间浪费比较多的是 安装composer 的时候,毕竟composer是国外的服务,国内安装起来毕竟隔道墙,安装完成后建议把源换成国内的,否则你可能会渐渐的对Linux失去兴趣
2021年01月28日
601 阅读
0 评论
0 点赞
2021-01-28
微信支付开发前准备(小程序、公众号、App、H5)
前言本人是一个PHPer,所以本文仅针对PHP开发人员,后面会更新本系列的其他微信公众号相关的内容,所以提前说明方向,以免误导了您。不过语言都是相通的,其他语言的开发也可以简单看看,了解一下,开发前期准备步骤都是一样的;话不多说,看正文1、注册一个服务号,并认证通过微信公众平台地址:https://mp.weixin.qq.com ,开发者可以使用公司邮箱,根据微信的官方引导注册 服务号,一定要是公司的邮箱,以后用经常用到的;注册完成之后,进行微信认证,路径:点击左上方头像 -> 选择认证详情 -> 在出来的界面按要求申请认证即可。2、开通微信支付功能认证通过以后,可在微信公众平台申请开通微信支付,路径:平台首页 -> 点击左侧微信支付 -> 点击支付申请 -> 根据官方引导一步步申请即可。开通微信支付需要注册登陆 微信商户平台,微信支付相关的信息都需要在这个平台上进行操作。注册登陆商户平台,进入账户中心 -> 支付申请 -> 按要求填写即可;PS:一定要注意服务号和商户平台必须是一个账户主体,也就是认证的公司需要一致,否则不是同一个商户。3、添加服务号和商户平台的用户管理权限通常开通微信公众平台和商户平台的人都是管理员,也就是你的老大等人员,我们开发者需要登陆使用功能时也不会使用管理员,所以需要添加自己微信号的权限;微信公众平台的权限叫做 运营者微信号,在公众平台的左侧 -> 人员设置中添加,需要管理员为我们绑定一个长期的运营者账号;商户平台地址:https://pay.weixin.qq.com微信商户平台的权限叫做 员工账号,在商户平台 -> 账户中心 -> 左侧员工账号管理 -> 选择某个角色(通常是管理员)-> 新增账号 -> 按要求填写之后即可;如果添加后开发者还是没有需要的相关权限,可以在角色右上方 配置权限 中授权修改。4、配置公众号 JS接口安全域名 和 网页授权域名微信强制规定,如果要使用公众号支付、H5支付、小程序支付等产品时,必须获取到用户的openid,也就是用户唯一标识,如果获取呢?公众号支付需要网页授权,而网页授权就必须配置 JS接口安全域名 和 网页授权域名这两个域名,小程序支付也一致;不同点是,公众号支付的域名可以是http/https,而小程序则必须是https;配置路径:公众平台 -> 左侧公众号设置 -> 功能设置 -> JS接口安全域名/网页授权域名需要下载微信的安全配置文件,放到咋们的服务器上,根据 授权的域名+认证文件 可以访问后即可配置完成;需要注意的是,每次修改认证域名都会再次重新认证域名,所以认证以后文件请不要轻易删除。PS:设置IP白名单,在IP白名单内的IP来源,获取access_token接口才可调用成功。路径:公众平台首页 -> 基本配置5、在商户平台开通相应的支付产品功能登陆微信商户平台,进入产品中心,可以开通需要的支付产品,如公众号支付、扫码支付、刷卡支付、H5支付;需要注意的是,在商户平台上小程序也属于公众号支付,不需要单独开通。PS:如果公司需要做提现等功能,需要直接向用户付款,那么需要开通 企业付款到零钱 产品功能,此功能主要用来解决合理的商户对用户付款需求,最终金额会直接到用户微信零钱中;如果公司需要向用户银行卡付款,则需要开通 企业付款到个人银行卡 产品功能,该功能提供由商户直接付钱至指定银行卡账户的能力,主要用来解决合理的商户对用户付款需求。如果公司提现是用公众号为用户发放红包,那么需要开通 现金红包 产品功能,企业向指定用户发放现金红包,红包会显示在服务号中,需要用户领取,用户在客户端领取到红包之后,所得金额进入微信钱包,可用于转账、支付或提取到银行卡。现金红包PS:开通条件:入账方式为即时入账至商户号,结算周期为T+1的商户需满足以下两个条件:1.入驻满90天,2.连续正常交易30天。其余结算周期的商户无限制6、在商户平台设置支付的相关ip授权这里以公众号支付为例,开通公众号支付后,这是还不能进行开发,我们需要拿到商户的几个重要信息:APP_ID(公众平台获取):公众号/小程序开发者ID(AppID) -> 公众平台首页 -> 基本配置APP_SECRET(公众平台获取):开发者密码(AppSecret) -> 公众平台首页 -> 基本配置MCH_ID(商户平台获取):商户号 -> 商户平台首页 -> 账户中心 -> 账户信息API_KEY(商户平台获取):API密钥 -> 商户平台首页 -> 账户中心 -> API安全APICLIENT_CERT(商户平台获取):安全证书路径 -> 商户平台首页 -> 账户中心 -> API安全PS:如果需要将小程序和公众号联通,需要在 公众平台首页 -> 基本配置 中绑定同一个微信开放平台帐号
2021年01月28日
1,391 阅读
0 评论
0 点赞
2021-01-28
在Windows10 VSCode中安装使用Fira Code字体,很烧包的那种
前言Visual Studio Code(VS code)是我认为的一个程序猿友好的编辑器,作为一个不务正业的程序猿,总有些奇怪的想法,比如把编辑器的字体换掉。。。效果教程下载在仓库下载最新字体:https://github.com/tonsky/FiraCode/releases安装下载成功后解压到任意位置(安装完成后可删除),找到 ttf 目录,全选所有 .ttf 文件,点击右键进行安装,在你的电脑上安装完成后到vscode中去配置。使用在VS code左下角点击设置按钮-->选择设置选项(或直接Ctrl+,)打开设置,添加以下代码并保存{ "editor.tabCompletion": "on", "editor.formatOnPaste": true, "editor.wordWrap": "on",//视区宽度类这行 "editor.fontSize": 17,//编辑器字体大小 "editor.fontFamily": "'Fira Code', Consolas, 'Courier New', monospace",//在编辑器中使用字体 "editor.fontLigatures": true,//启用字体连字 }添加完保存就好了,如果字体没有应用,那就重启,毕竟世界上的80%的BUG是重启后解决的。
2021年01月28日
534 阅读
0 评论
0 点赞
2021-01-28
centos中运行shell脚本时出现 "line2: $'\r': 未找到命令"
我的博客中有几篇分享shell脚本的文章,我都是直接把代码粘贴到文章中的,今天我发现脚本直接复制保存到文件中居然无法运行。。。出现如下错误考虑到代码是在windows下编辑后粘贴在文章中的,可能会出现编码格式不兼容的情况,于是找了下解决方案。如下:解决方案:ubuntu下: sudo apt-get install dos2unix dos2unix **.shcentos下: yum install dos2unix dos2unix **.sh然后再执行脚本,完美运行
2021年01月28日
464 阅读
0 评论
0 点赞
2021-01-28
TYPO3项目代码打包备份
原文链接:https://www.whongbin.cn/article-detail/140.html打包备份项目代码完整项目打包目录下所有文件全部进行打包tar -zcvf web_20200520.tar.gz --exclude=/wwwroot/www.whongbin.cn/demo --exclude=/wwwroot/www.whongbin.cn/fileadmin --exclude=/wwwroot/www.whongbin.cn/typo3temp --exclude=/wwwroot/www.whongbin.cn/uploads --exclude=/wwwroot/www.whongbin.cn/*.log /wwwroot/www.whongbin.cn/* 过滤指定目录后打包例:上传目录和缓存目录不进行打包tar -zcvf web_20200520.tar.gz --exclude=/wwwroot/www.whongbin.cn/typo3temp --exclude=/wwwroot/www.whongbin.cn/uploads /wwwroot/www.whongbin.cn/* 过滤指定文件后打包例:已备份的包及日志文件不进行打包tar -zcvf web_20200520.tar.gz --exclude=/wwwroot/www.whongbin.cn/*.gz --exclude=/wwwroot/www.whongbin.cn/*.log /wwwroot/www.whongbin.cn/* 过滤指定文件或目录后打包例:自定义目录(demo),文件管理目录(fileadmin),缓存目录(typo3temp),上传目录(uploads),所有自定义输出的日志文件(.log),所有已打包的(.gz),所有已打包的(*.zip)不进行打包tar -zcvf web_20200520.tar.gz --exclude=/wwwroot/www.whongbin.cn/demo --exclude=/wwwroot/www.whongbin.cn/fileadmin --exclude=/wwwroot/www.whongbin.cn/typo3temp --exclude=/wwwroot/www.whongbin.cn/uploads --exclude=/wwwroot/www.whongbin.cn/*.log --exclude=/wwwroot/www.whongbin.cn/*.gz --exclude=/wwwroot/www.whongbin.cn/*.zip /wwwroot/www.whongbin.cn/*
2021年01月28日
483 阅读
0 评论
0 点赞
2021-01-28
windows10中自定义位置安装WSL
摘要Windows10中为开发者提供了一个友好的Linux子系统,这对于开发人员来说无疑是非常大的帮助了,但是微软商店中的扩展安装后会自动安装到Windows系统的C盘,这就多少有点不友好了,好在官方提供了离线安装包,这就很人性化了,如图 我的是安装到了E盘1、下载linux安装包:下载地址:WSL离线安装包官方提供的离线安装包如下2、安装LxRunOffline:下载链接 LxRunOffline下载链接解压后将解压的文件夹路径加入到环境变量中,打开cmd输入LxRunOffline,若提示[ERROR] No action is specified. 和帮助文档,则代表LxRunOffline已经安装成功。3、安装WSL1.在windows10控制面板-卸载程序-安装功能 中添加windows10子系统功能2.将下载的linux包的后缀由.Appx改为.zip,并进行解压。方法1打开cmd,输入 LxRunOffline i -n <安装名称> -d <安装路径> -f <安装文件>其中安装名称可以自定义,安装路径为自定义安装路径,安装文件为上一步解压后的文件中的install.tar.gz的路径,回车后等待安装完成。方法2直接双击解压目录中的.exe可执行文件进行安装,会自动安装到当前目录中4、启动在powershell中输入 wsl 启动系统。若系统中安装不止一个WSL,则可以通过 LxRunOffline sd -n <安装名称> 设置默认启动系统,若忘记安装名称,可通过 LxRunOffline list 命令查看。
2021年01月28日
1,034 阅读
0 评论
0 点赞
2020-12-06
php使用tcpdf导出pdf文件无法使用中文名称的解决办法
前言吐槽下这两天做的一个项目,大致就是做的一个面向公众的涂鸦作品(拍照上传)收集的H5,这个H5有生成证书的功能,还有生成海报的功能,在海报那个地方遇到了不小的挫折,今天不说这个了,说下另外一个问题,TCPDF问题项目进入维护期了,客户想要把当时收集用户信息时签订的线上协议导出来,协议这种东西,最好的存档格式就是PDF了,因为之前也用过TCPDF,所以决定还是用它,项目是基于laravel6.0开发的,本来是有compposer库可用的,但是无奈啊,库需要的PHP版本 PHP7.3+ ......艹艹艹艹,不用了.下载代码->写方法->写页面->导出.一切正常,没有问题了,可以交付了吧,但是我突然发现,文件居然是用的时间戳命名的,这肯定不合适啊...然后就想着换成用户名称+协议名称.pdf就好了啊,但是万万没想到,导出时只剩.pdf了 那我的文件名呢???解决满世界找了一圈方法,后来发现TCPDF确实是存在这种问题的,那就把我找到的方法分享下吧找到tcpdf源码目录下的 tcpdf.php,修改其中的一些代码(仅修改Output()方法)就ok了删除或注释过滤操作下面这段代码会把所有中文字符都替换成空字符,作为首要的罪魁祸首,果断注释if ($dest[0] != 'F') { $name = preg_replace('/[\s]+/', '_', $name); $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name); }修改header去掉以下代码中的basename()函数,说实话我不知道为啥要去掉...附上basename()函数的解释吧 https://www.runoob.com/php/func-filesystem-basename.htmlheader('Content-Disposition: attachment; filename="'.basename($name).'"'); //注释这行换成header('Content-Disposition: attachment; filename="'.$name.'"'); //换成这行最后就这样了,没啥说的,反正是可以正常导出了
2020年12月06日
472 阅读
0 评论
0 点赞
1
2
3
...
8