技术饭 thinkphp5.1日志文件夹及文件权限问题

thinkphp5.1日志文件夹及文件权限问题,由于www用户和root用户(比如cmd的cli进程日志)都有可能对log文件夹或文件进行创建和读写。如果是先由www用户创建的log文件夹活文件,则不会出任何问题。但是如果是先由root用户创建的文件,然后再由www用户角色去读写就会出现异常报错。因为一般默认创建的log文件的权限是 -rw-r--r-,也就是www没有权限去写入root用户创建的log文件。

阅读全文 » 181天前
2022年06月01日

技术饭 PHP中ElasticSearch的简单使用

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

阅读全文 » 270天前
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的却一直都是正常的,初步排查是本地环境配置导致。

阅读全文 » 279天前
2022年02月22日

技术饭 PHP7新特性

PHP7已经更新很久了,但是实际上很多人用的还是php5.6,最近也刚刚开始使用php7,发现还是有很多的新特性,事实上现在已经更新到php8了,php7性能方面比以往的版本好很多,php7新增了一些特性也丢弃掉了一些用法。

阅读全文 » 309天前
2022年01月24日

技术饭 PHP简单对称ID加密、解密算法

PHP简单对称ID加密、解密算法,有时候需要对数据进行简单的混淆,不让别人轻易破解,所以就需要对数据进行一定的加密解密来保证数据的安全性,这里做个简单的算法。

阅读全文 » 325天前
2022年01月07日

技术饭 php函数getimagesize()函数获取腾讯云对象存储图片信息太慢解决办法

php函数getimagesize()函数获取腾讯云对象存储图片信息太慢,导致接口返回超过了5s,这个体验太不好了,按照正常逻辑:想获取图片信息,当然是用getimagesize()函数,对于getimagesize()函数而言本地服务器的文件读取相对是比较快的,但是远程的图片就太慢了,必须先现在到本地服务器,然后再获取,如果有的图片很大,那这个下载速度可想而知的慢。

阅读全文 » 376天前
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函数在执行的时候出错了。无论怎么执行单引号的一直不行,就很奇怪。后来改成双引号才得以解决。

阅读全文 » 412天前
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的登录状态就消失了,直接退出登录。

阅读全文 » 472天前
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

阅读全文 » 478天前
2021年08月08日

技术饭 php 7.2 安装 swoole 扩展

centos版本升级到8,PHP的环境升级 php 7.2 后,当我们需要使用到swoole服务的时候这时候就需要安装swoole,php扩展的安装相对比较简单,swoole的安装步骤可以参考swoole官方的文档教程:https://wiki.swoole.com/#/environment

阅读全文 » 480天前
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才能访问得到。

阅读全文 » 486天前
2021年07月30日

技术饭 JAVA原生的类实现SHA256加密签名,转换成PHP版本加密

JAVA原生的类实现SHA256加密签名,转换成PHP版本加密签名,注意点主要在sort字典排序的时候需要设置方式为 SORT_STRING,如果sha 256加密函数的第三个参数设置为true时,这时候返回的是二进制数据,默认是false返回的则是进制的字符串。

阅读全文 » 553天前
2021年05月24日

技术饭 PHP利用websocket实现客户端请求ws协议功能

PHP利用websocket实现客户端请求ws协议功能,利用websocket实现PHP对ws协议的请求,这里PHP是作为一个客户端通过ws协议请求服务,而不是作为服务端,这个首先要区分下。ws协议是websocket的东西,现在也有很多东西可以实现,如workerman、swoole,但是说实话,看到workerman的文档,有介绍怎么实现这个功能,但是个人是感觉真的很头疼,一切都是基于cli,基本都是用到命令行去执行,一个类似curl请求获取结果的功能还要去捣鼓这些东西,真是呵呵哒。swoole就不说了,首先Windows都不支持(当然,现在基本都是用Linux,但是个人感觉不是很通用)。

阅读全文 » 605天前
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的使用

阅读全文 » 605天前
2021年04月02日

技术饭 thinkphp5将json对象转数组

thinkphp5将json对象转数组,tp5获取得到的数据是json格式,但是无法通过数据的方式直接获取,以前是有默认转换,现在只能通过 getContent() 方法来获取内部的数据了。

阅读全文 » 605天前
2021年04月02日

技术饭 php7.2微信公众平台消息安全模式的加密及解密

php7.2微信公众平台消息安全模式的加密及解密,php7.2发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利。但是从php7.0 升级到 php7.2 废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展)。官方提供了相应的解决提示,却没有提供更详细的解决办法。于是就各种报错,当然了只能改方法了~~~

阅读全文 » 702天前
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。

阅读全文 » 707天前
2020年12月22日

技术饭 PHP查询用户排名名次、Mysql查询用户排名名次的方法

PHP查询用户排名名次、Mysql查询用户排名名次的方法,最近做了用户排行榜,那么就整理了查询用户排行的一些代码,主要分为两部分:PHP、Mysql两者独立查询用户排名信息,当然查询的是所有用户的排名以及当前用户的排名信息。

阅读全文 » 723天前
2020年12月05日

技术饭 前端js加密后台php解密,自定义加密方法

前端js加密后台php解密,自定义加密方法,前端html输入用户名密码之后,使用http传到后台,post的内容全部是明文,用户名和密码通过抓包工具可以很容易获取到,所以需要在http传输之前对密码进行加密处理,php收到post内容之后进行解密,然后进行后续认证处理。

阅读全文 » 724天前
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(); 将复回原样。

阅读全文 » 728天前
2020年11月30日

技术饭 PHP二维数组去除重复项

PHP的一维数组正常使用array_unique()方法直接去除重复项即可,但是二维数据似乎没有固定的内置函数,这时候就需要自己手动些方法处理了,那如果去除二维数组的重复项呢?研究了一会,大概写了简略版本的去重方案。

阅读全文 » 740天前
2020年11月18日

技术饭 解决Unable to find the wrapper "https"的二种方法

​这个问题其实通php加载openssl模块来解决,是件挺容易的事,但是牵扯到用什么linux系统,以及是用多少位的linux系统,以及php自身的版本问题,以及是不是手动安装,还是管理工具安装时,其实有的时候,还是比较麻的。

阅读全文 » 745天前
2020年11月13日

技术饭 PHP mkdir函数创建目录失败

PHP 编程中,经常会遇到文件的上传,文件夹的创建等等。其中会用到一个非常重要的函数:mkdir;它的作用是创建一个目录,用来存放上传文件的文件夹。在上传过程中如果涉及多级目录的创建,经常会遇到错误,怎么如何处理呢??

阅读全文 » 745天前
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官方源,使用和配置都简单很多。

阅读全文 » 748天前
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

阅读全文 » 749天前
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不是这个,所以就报错了。

阅读全文 » 749天前
2020年11月10日

技术饭 nginx 访问 .php文件变成下载

Nginx 浏览.php文件变成下载:这是因为nginx没有设置好碰到php文件时,要传递到后方的php解释器。看看你的nginx.conf配置,里面有没有这样的设置:location ~ .*\.php$ { fastcgi_pass 127.0.0.1:9000;}

阅读全文 » 749天前
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 ,然后短网址做个重定向到长网址就好了。

阅读全文 » 752天前
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

阅读全文 » 761天前
2020年10月28日

技术饭 php判断当前是http还是https

php判断当前是http还是https,使用 $_SERVER['HTTPS'] 的值来判断,或者通过 $_SERVER['SERVER_PORT'] 的端口号443来判断是否是https,如果is_ssl()方法返回true则是https,如果返回false则是http。

阅读全文 » 779天前
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进行扩展和改进,增强了实用功能。

阅读全文 » 790天前
2020年09月29日

技术饭 PHPMailer实现PHP的邮件发送,附带附件

PHPMailer发送邮件,附带附件,phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。

阅读全文 » 796天前
2020年09月23日

技术饭 vue.js前端获取thinkphp5.1后端api接口的验证码,验证码一直验证失败

最近需要做验证码接口,前端使用的vue.js接收,遇到如下问题:thinkphp5.1框架默认生成的验证码是session方式给到前端用户,验证码图片生成没有问题,出现问题是在验证验证码的步骤:每次验证都是显示验证码错误。测试了才知道api接口模式,访问不同接口的生成才session_id是不一样的,所以导致生成验证码与确认验证码的接口两个session_id不一致,那么解决问题的方式就是设置同一个session_id就可以了。

阅读全文 » 800天前
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中的参数就失效了,无论设置成什么都会失效。

阅读全文 » 805天前
2020年09月14日

技术饭 PHP SDK上传文件到阿里云oss文件存储Bucket

对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。最近业务需求做了PHP SDK上传文件到阿里云oss文件存储Bucket的相关工作。

阅读全文 » 817天前
2020年09月03日

技术饭 PHP WSG84转BD09 地理坐标系互转

最近使用了微信公众号的地理定位服务,获取得到的纬度与经度用来转换成功详细地址信息,腾讯使用的地图地位坐标系是WSG84,如果获取地理位置信息使用的是腾讯地图服务的话就不需要转换,如果使用的是百度或者其他精度的坐标系,则需要进行转换。

阅读全文 » 832天前
2020年08月18日

技术饭 php解析ip地址的免费纯真IP数据库

之前使用的tp3的UTFWry.dat作为ip解析,但是感觉这个类有点旧,还比较难用,数据不多,如果需要其他信息还需要重新修改IpLocation.php类,淘宝腾讯提供的免费第三方获取ip的方式不太稳定,所以找了找还是基于qqwry.dat的ip库相对合适。

阅读全文 » 834天前
2020年08月16日

技术饭 think\cache\Driver::unserialize()经常报Error at offset... bytes这样的错误

think\cache\Driver::unserialize()经常报Error at offset... bytes这样的错误,这几天做了抢红包的活动,请求高并发之后,程序出现了报错,数据无法写入数据库,查询调试发现报的错误是:unserialize(): Error at offset 284217 of 284296 bytes,后来是清除了缓存才解决了问题,可是问题是总不能一直清除缓存吧!!!

阅读全文 » 835天前
2020年08月15日

技术饭 PHP实现微信支付的现金红包、企业付款到零钱功能

企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式。具有免费、快速到账、灵活、安全等优点。商户可以使用企业付款,用于如:费用报销、员工福利、用户奖励等。微信红包,2014年春节一推出即受到广大用户好评,引发全民抢红包热潮。现将微信红包打造成“现金红包”,作为一款定向资金发放的营销工具,供商户使用。用户在客户端领取到红包之后,所得金额进入微信钱包,可用于转账、支付或提取到银行卡。

阅读全文 » 843天前
2020年08月07日

技术饭 转:PHP phpspreadsheet 导出大数据 csv excel

最近项目一直需要导出数据到Excel里,使用了phpspreadsheet导出Excel,但是数据量一大的话就卡住了,正常导出大概不到1w条吧,超过1w条NGINX可能就报502超时了,为了解决问题只能百度看看了。

阅读全文 » 934天前
2020年05月08日