技术饭 PHP搜索引擎MeiliSearch实现全文检索
PHP搜索引擎MeiliSearch实现全文检索,Meilisearch 搜索引擎使用 Rust 语言开发,轻量,对中文搜索非常友好,几乎做到了零配置,零学习成本,部署即用,非常方便。建立在 LMDB 键值存储之上,安装在 Ubuntu 或 MacOS 上时,它以 35 MB 的二进制文件形式存在。 MeiliSearch 带有内置的客户端、服务器和 WebUI。 词干提取、停用词、同义词、排名、过滤器和分面等功能都是开箱即用的,使用合理的默认值并且可以轻松定制。
阅读全文 » 今天22 小时前
技术饭 PHP 导入导出csv文件函数:fgetcsv()、fputcsv()
PHP 导入导出csv文件函数:fgetcsv()、fputcsv(),数据导出格式正常是execl的.xsl、.xslx格式,但导出这两种格式的文件体积很大,还很占用内存,所以一般推荐导出csv格式,csv能处理的数据量比较大,文件还小,是导出数据文件格式的首选。
阅读全文 » 前天2023年05月30日
技术饭 WSL2使用PHP访问Windows 11上的MongoDB报错:Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: [connection refused calling hello on 'localhost:27017']
WSL2使用PHP访问Windows 11上的MongoDB报错:Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling hello on 'localhost:27017'],解决方法是:1、防火墙需要运行wsl2、2、mongodb配置文件设置bindIp=0.0.0.0、3、设置wsl中对应host访问
阅读全文 » 4天前2023年05月28日
生活札记 Laravel学习笔记 - 基础入门(一)
Laravel 是一个全栈Web应用程序框架,具有富有表现力、优雅的语法。它可以从面条一样杂乱的代码中解脱出来,它可以构建网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
阅读全文 » 27天前2023年05月05日
生活札记 golang学习笔记 - helper辅助函数(六)
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。Go 是谷歌支持的开源编程语言,易于学习和入门,内置并发和强大的标准库,不断发展的合作伙伴、社区和工具生态系统。Golang没有提供类似PHP的内置函数,所以很多时候需要自行整理成一个辅助方法库。
阅读全文 » 43天前2023年04月19日
技术饭 gitee+webhook+php实现自动拉取代码
gitee+webhook+php实现自动拉取代码,在项目开发中使用git进行代码的管理,每次完成更改上传代码后,还需要登录服务器将代码拉取下来,现在git服务器(gitee/gitlab/github)都会有Webhooks功能,以实现在向git仓库推送/合并等时机让服务器自动拉取新代码。
阅读全文 » 106天前2023年02月15日
技术饭 thinkphp5.1日志文件夹及文件权限问题
thinkphp5.1日志文件夹及文件权限问题,由于www用户和root用户(比如cmd的cli进程日志)都有可能对log文件夹或文件进行创建和读写。如果是先由www用户创建的log文件夹活文件,则不会出任何问题。但是如果是先由root用户创建的文件,然后再由www用户角色去读写就会出现异常报错。因为一般默认创建的log文件的权限是 -rw-r--r-,也就是www没有权限去写入root用户创建的log文件。
阅读全文 » 365天前2022年06月01日
技术饭 PHP中ElasticSearch的简单使用
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
阅读全文 » 455天前2022年03月03日
技术饭 腾讯云Elasticsearch Service出现:No alive nodes found in your cluster 提示
腾讯云Elasticsearch Service出现:No alive nodes found in your cluster 提示,访问控制的ip已经添加了,但是我们有的机器可以访问有的不能访问这个?本地使用phpstudy工具访问Elasticsearch Service,出现部分电脑可以部分电脑不行,按照了wnmp的却一直都是正常的,初步排查是本地环境配置导致。
阅读全文 » 464天前2022年02月22日
技术饭 PHP简单对称ID加密、解密算法
PHP简单对称ID加密、解密算法,有时候需要对数据进行简单的混淆,不让别人轻易破解,所以就需要对数据进行一定的加密解密来保证数据的安全性,这里做个简单的算法。
阅读全文 » 510天前2022年01月07日
技术饭 php函数getimagesize()函数获取腾讯云对象存储图片信息太慢解决办法
php函数getimagesize()函数获取腾讯云对象存储图片信息太慢,导致接口返回超过了5s,这个体验太不好了,按照正常逻辑:想获取图片信息,当然是用getimagesize()函数,对于getimagesize()函数而言本地服务器的文件读取相对是比较快的,但是远程的图片就太慢了,必须先现在到本地服务器,然后再获取,如果有的图片很大,那这个下载速度可想而知的慢。
阅读全文 » 561天前2021年11月17日
技术饭 eval()’d code on line 1 的解决方法
eval()’d code on line 1 的解决方法,php的eval函数是用来把一段文字当作一段php的脚本来执行,这样做的好处是我们可以动态修改php执行的内容。原始是看了权限部分的eval方法,运行代码,提示 “eval()’d code on line 1”,根据提示来看是eval函数在执行的时候出错了。无论怎么执行单引号的一直不行,就很奇怪。后来改成双引号才得以解决。
阅读全文 » 596天前2021年10月13日
技术饭 解决两个跨域但是同站、同域、同源的域名(Sec-Fetch-Site: same-site),通过接口请求设置session_id()改变PHPSESSID的问题
解决两个跨域但是同站、同域、同源的域名(Sec-Fetch-Site: same-site),通过接口请求设置session_id()改变PHPSESSID的问题,现象:1、两个https的二级域名解析在同一台服务器上,端口都是443;2、前端域名与接口域名同时在同一个浏览器打开,接口域名登录后台生成PHPSESSID,保存了登录状态;3、前端域名请求接口域名生成验证码,验证保存在session里面,由于访问接口,每次的会话session_id都是不一致,为了实现跨域验证码的验证,这个时候需要在接口端设置session_id(随机数),然后把这个随机值返回给前端,到时候验证的时候再设置session_id(随机数),这样会话才能保持一致,验证码才能通过验证;4、由于步骤3设置session_id(随机数)重新生成PHPSESSID后,导致了步骤2登录后台的PHPSESSID被改成了步骤3设置的PHPSESSID,这时候步骤2的登录状态就消失了,直接退出登录。
阅读全文 » 656天前2021年08月14日
技术饭 centos8下php的安装
centos8下php的安装,centos8下事实上yum已经集成php7.2,安装相对的简单直接:yum -y install php 一键安装就好了,非常的方便, yum info php 可以查看当前php的版本,最主要的还是配置php的扩展,比如:redis、swoole、mcrypt等扩展的安装。save_handler
阅读全文 » 663天前2021年08月08日
技术饭 php 7.2 安装 swoole 扩展
centos版本升级到8,PHP的环境升级 php 7.2 后,当我们需要使用到swoole服务的时候这时候就需要安装swoole,php扩展的安装相对比较简单,swoole的安装步骤可以参考swoole官方的文档教程:https://wiki.swoole.com/#/environment
阅读全文 » 665天前2021年08月05日
技术饭 main(): Failed opening required '/manyidea/Config.php' (include_path='.:/usr/share/pear:/usr/share/php')
main(): Failed opening required '/manyidea/Config.php' (include_path='.:/usr/share/pear:/usr/share/php'),php文件上传时发生错误,提示打不开文件,搞了半天也没一个头绪,改了php.ini的配置也无济于事,后来才发现是centos系统的文件夹目录都是drw-xr-x,并不是755或者777,正常情况应该是drwxr-xr-x才能访问得到。
阅读全文 » 671天前2021年07月30日
技术饭 JAVA原生的类实现SHA256加密签名,转换成PHP版本加密
JAVA原生的类实现SHA256加密签名,转换成PHP版本加密签名,注意点主要在sort字典排序的时候需要设置方式为 SORT_STRING,如果sha 256加密函数的第三个参数设置为true时,这时候返回的是二进制数据,默认是false返回的则是进制的字符串。
阅读全文 » 738天前2021年05月24日
技术饭 PHP利用websocket实现客户端请求ws协议功能
PHP利用websocket实现客户端请求ws协议功能,利用websocket实现PHP对ws协议的请求,这里PHP是作为一个客户端通过ws协议请求服务,而不是作为服务端,这个首先要区分下。ws协议是websocket的东西,现在也有很多东西可以实现,如workerman、swoole,但是说实话,看到workerman的文档,有介绍怎么实现这个功能,但是个人是感觉真的很头疼,一切都是基于cli,基本都是用到命令行去执行,一个类似curl请求获取结果的功能还要去捣鼓这些东西,真是呵呵哒。swoole就不说了,首先Windows都不支持(当然,现在基本都是用Linux,但是个人感觉不是很通用)。
阅读全文 » 790天前2021年04月02日
技术饭 PHP使用Redis的Hash(哈希表)命令
PHP使用Redis的Hash(哈希表)命令,本文介绍了Redis的Hash(哈希表)命令:hDel,hExists,hGet,hGetAll,hIncrBy,hIncrByFloat,hKeys,hLen,hMGet,hMSet,hSet,HSetnx,hVals作用和php的使用
阅读全文 » 790天前2021年04月02日
技术饭 thinkphp5将json对象转数组
thinkphp5将json对象转数组,tp5获取得到的数据是json格式,但是无法通过数据的方式直接获取,以前是有默认转换,现在只能通过 getContent() 方法来获取内部的数据了。
阅读全文 » 790天前2021年04月02日
技术饭 php7.2微信公众平台消息安全模式的加密及解密
php7.2微信公众平台消息安全模式的加密及解密,php7.2发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利。但是从php7.0 升级到 php7.2 废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展)。官方提供了相应的解决提示,却没有提供更详细的解决办法。于是就各种报错,当然了只能改方法了~~~
阅读全文 » 887天前2020年12月26日
技术饭 php 7.2 安装 mcrypt 扩展
centos版本升级到8,PHP的环境升级 php 7.2 后,使用微信提供的加解密代码时,提示 call to undefined function mcrypt_module_open(),mcrypt_module_open()方法不存在,应该是PHP升级之后可能扩展被废弃了吧,查阅相关资料知晓,mcrypt 扩展从 php 7.1.0 开始废弃;自 php 7.2.0 起,会移到 pecl。
阅读全文 » 891天前2020年12月22日
技术饭 PHP查询用户排名名次、Mysql查询用户排名名次的方法
PHP查询用户排名名次、Mysql查询用户排名名次的方法,最近做了用户排行榜,那么就整理了查询用户排行的一些代码,主要分为两部分:PHP、Mysql两者独立查询用户排名信息,当然查询的是所有用户的排名以及当前用户的排名信息。
阅读全文 » 908天前2020年12月05日
技术饭 前端js加密后台php解密,自定义加密方法
前端js加密后台php解密,自定义加密方法,前端html输入用户名密码之后,使用http传到后台,post的内容全部是明文,用户名和密码通过抓包工具可以很容易获取到,所以需要在http传输之前对密码进行加密处理,php收到post内容之后进行解密,然后进行后续认证处理。
阅读全文 » 909天前2020年12月04日
技术饭 PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。
PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。平时我们使用的PHP加密方法都是一些不可逆的加密函数为:md5()、sha1()、crypt()等。md5() 用来计算 MD5 哈稀。语法为:md5(); crypt() 将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。可逆转的加密有:base64_encode()、urlencode() 相对应的解密函数:base64_decode() 、urldecode() 。base64_encode() 将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。 它的解密函数为:base64_decode(); 将复回原样。urlencode() 将字符串以 URL 编码。例如空格就会变成加号。它的解密函数为:urldecode(); 将复回原样。
阅读全文 » 913天前2020年11月30日
技术饭 PHP二维数组去除重复项
PHP的一维数组正常使用array_unique()方法直接去除重复项即可,但是二维数据似乎没有固定的内置函数,这时候就需要自己手动些方法处理了,那如果去除二维数组的重复项呢?研究了一会,大概写了简略版本的去重方案。
阅读全文 » 925天前2020年11月18日
技术饭 解决Unable to find the wrapper "https"的二种方法
这个问题其实通php加载openssl模块来解决,是件挺容易的事,但是牵扯到用什么linux系统,以及是用多少位的linux系统,以及php自身的版本问题,以及是不是手动安装,还是管理工具安装时,其实有的时候,还是比较麻的。
阅读全文 » 930天前2020年11月13日
技术饭 PHP mkdir函数创建目录失败
PHP 编程中,经常会遇到文件的上传,文件夹的创建等等。其中会用到一个非常重要的函数:mkdir;它的作用是创建一个目录,用来存放上传文件的文件夹。在上传过程中如果涉及多级目录的创建,经常会遇到错误,怎么如何处理呢??
阅读全文 » 930天前2020年11月13日
技术饭 CentOS8 Nginx+PHP7.2+mysql8+redis+git的配置以及注意事项
CentOS8 Nginx+PHP7.2+mysql8的配置以及注意事项,CentOS8的配置相对Contos7比较简单。在以下讲解中会详细讲解到两个系统nginx、php、mysql8的安装和配置。目前nginx1.14、php7.2、mysql8都已经加入centos8官方源,使用和配置都简单很多。
阅读全文 » 933天前2020年11月11日
技术饭 PHP7.2 redis扩展的安装
PHP7.2 redis扩展的安装,一.下载php-redis包,解压:wget http://pecl.php.net/get/redis-4.0.2.tgz;tar -xzvf redis-4.0.2.tgzcd redis-4.0.2;二.通过phpize生成编译configure配置文件,编译&&安装;没有配置环境变量的话,必须使用 绝对地址 ,例子:/usr/php/phpize;phpize;指定php配置文件的位置;./configure --with-php-config=/usr/bin/php-config
阅读全文 » 934天前2020年11月10日
技术饭 nginx 502 bad gateway 解决 connect() failed (111: Connection refused) while connecting to upstream
nginx 502 bad gateway 解决 connect() failed (111: Connection refused) while connecting to upstream,新安装了centos8,配置了php7.2,还没怎么用,一直报错,烦都烦死。多方求证最后才知道是php的配置是:fastcgi_pass 127.0.0.1:9000; 但是php-fpm/www.conf里配置的监听listen不是这个,所以就报错了。
阅读全文 » 934天前2020年11月10日
技术饭 nginx 访问 .php文件变成下载
Nginx 浏览.php文件变成下载:这是因为nginx没有设置好碰到php文件时,要传递到后方的php解释器。看看你的nginx.conf配置,里面有没有这样的设置:location ~ .*\.php$ { fastcgi_pass 127.0.0.1:9000;}
阅读全文 » 934天前2020年11月09日
技术饭 PHP短网址生成逻辑与实现
微博短网址大家一定不陌生,如:http://t.cn/ 这个网站点开就直接跳转到了微博,是不是看起来很方便,但应该很多人都不知道是怎么实现的,我们今天就来讲讲PHP生成短网址的方法。PHP生成短网址的:如果把短网址还原了,你知道是个什么样子的吗?可能你看到的短网址都是这个样子:http://p-d-d.cn/T0f121,其实他还原了说不定就是这个样子:https://www.copylian.com/,按这个格式可以知道这个短网址其实是通过代码将长的网址:https://www.copylian.com/ 转成 http://p-d-d.cn/T0f121 ,然后短网址做个重定向到长网址就好了。
阅读全文 » 937天前2020年11月06日
技术饭 TP5使用unlink删除文件报错:Resource temporarily unavailable
TP5使用unlink删除文件报错:Resource temporarily unavailable,今天在TP5内使用unlink删除上传图片的时候报错了。情况是 $info = $file->move();获得 $info 变量后 $info->getRealPath() 通过该方法获取上传文件真实路径,然后直接unlink时报错 Resource temporarily unavailable
阅读全文 » 946天前2020年10月28日
技术饭 php判断当前是http还是https
php判断当前是http还是https,使用 $_SERVER['HTTPS'] 的值来判断,或者通过 $_SERVER['SERVER_PORT'] 的端口号443来判断是否是https,如果is_ssl()方法返回true则是https,如果返回false则是http。
阅读全文 » 964天前2020年10月10日
技术饭 PHP创建PDF文档,相应的PHP类库有:TCPDF、mPDF、Dompdf等
PHP创建PDF文档,相应的PHP类库有:TCPDF、mPDF、Dompdf等,如果要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天介绍一款PDF库:TCPDF,TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进,增强了实用功能。
阅读全文 » 975天前2020年09月29日
技术饭 PHPMailer实现PHP的邮件发送,附带附件
PHPMailer发送邮件,附带附件,phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。
阅读全文 » 981天前2020年09月23日
技术饭 vue.js前端获取thinkphp5.1后端api接口的验证码,验证码一直验证失败
最近需要做验证码接口,前端使用的vue.js接收,遇到如下问题:thinkphp5.1框架默认生成的验证码是session方式给到前端用户,验证码图片生成没有问题,出现问题是在验证验证码的步骤:每次验证都是显示验证码错误。测试了才知道api接口模式,访问不同接口的生成才session_id是不一样的,所以导致生成验证码与确认验证码的接口两个session_id不一致,那么解决问题的方式就是设置同一个session_id就可以了。
阅读全文 » 985天前2020年09月19日
技术饭 POST参数超过1000后,$_POST中1000以后的参数丢失,但是php5.6 max_input_vars 修改无反应?
之前做了图片文件上传到阿里云oss存储中,阿里本身的传输没有问题,但是在当保存到自己数据库的时候就报错了,第一次报错是id不存在,本来数据表就是一条记录,更新的主键ID竟然不存在,查了下js传过过来的formdata参数正常,但是$_POST就只仅仅取到了一部分数据,剩余的数据丢失了,想想应该是php限制的问题,最终确定是参数: max_input_vars 默认限制了1000,本来是改成了5000,但是测了还是没效果,查了phpinfo()发现:php-fpm重启之后 max_input_vars 的值并没有改变,多方查证发现服务器的php配置原来是外包公司配置的,外包公司把配置文件改到了 php-fpm.conf 文件里面,所以原始的php.ini中的参数就失效了,无论设置成什么都会失效。
阅读全文 » 990天前2020年09月14日