背景 我本地开发用的 php 和 nginx 都部署在 docker 中,宿主机为 MacOS 宿主机中 hosts 一个域名 127.0.0.1 abc.test,再把 nginx 容器的 80 端口映射出来。就能正常通过 abc.test 访问到 nginx 再转发给 php 看起来很完美,直到 —— 我需要在 php 中访问 abc.test 这个站点的时候 当我在 php 容器中需要解析这
分类: PHP
Laravel Sanctum 与 Postman 之类测试工具的坑
最近在筹备自己写个博客,是的,造轮子。主要是我自己缺一个全栈的中型项目写在简历上,所以打算造个轮子 翻了翻 Laravel 的文档,准备用新出的 Sanctum SPA认证 来解决管理后台的登录问题 登录失败 因为后台还没撸出来,所以先用 Postman 来测试接口。跟着官方文档,直到 GET /sanctum/csrf-cookie 这一步都没有问题,能够正常接收到 XSRF-TOKEN 和 b
解决 Laravel tinker 下方向键、退格键无法使用的问题
部分环境下使用 php artisan tinker 命令时,如果按下方向键或者退格键时会出现类似^[[A这样的乱码 解决方案有两种,结合自身情况怎么方便就怎么来 方案一 安装 PHP 官方的 readline 扩展 方案二 安装 rlwrap 这个包,然后 rlwrap php artisan tinker
PHP 检测文件编码的不完美解决方案
因为某些原因现在需要批量检测文件编码,看看是不是有非 UTF-8 文件混在其中 我当然是首选了我最熟悉的 PHP,感觉应该很简单 google 搜索 php detect encoding,第一个就是 PHP 官方文档 mb_detect_encoding – Manual – PHP 于是按照文档有样学样,拿个 UTF-8 文件测试一下 echo mb_detect_en
百万级xlsx表格导入数据库的实现方案
需求是这样的,供应商给到一份 xlsx 表格(144MB),里面刚好有 100w 行数据(11列)。我需要把它们稍作处理后写入到 mysql 数据库 项目基于 Laravel,既然需要稍作处理,那我首先想到的就是找一个能读 xlsx 的 composer 包 我尝试过最知名的PhpSpreadsheet、对 Laravel 友好的 Laravel-Excel。然而不管是顺序读还是分块读,尝试各种方
基于PHP 的 CloudXNS DDNS 客户端
简介 基于php的CloudXNS DDNS客户端 可以看作是 CloudXNS-DDNS-with-PowerShell 的php版本,实现思路也是借鉴于这个项目的 开发这个php版本是因为我使用上述脚本时莫名报错,而且似乎还找不到原因 本着“一个轮子解决不了的问题就再造个轮子来解决”的码农精神,本项目诞生了 使用说明 首先需要你本地安装好php且可以执行php程序 开源地址:https://g
TP5.1不继承控制器基类的情况下实例化视图
手头的项目有个需求是在命令行下渲染模板并返回html源码,以便进一步处理 但是TP5.0里的 $view = \think\View::instance() 在5.1里面被砍掉了,而且命令行下无法继承控制器基类。那要怎么办呢? 我通过阅读源码解决了这个问题,分享一下: use think\Container; // 省略其他代码… $app = Container::get(‘app’); $vi
绕过微信爬取猩便利特价信息并推送到微信
前言 公司里又多了一个无人货架——就是前阵子新闻说融资好几亿的猩便利 我是搞不太懂这玩意儿怎么突然火起来而且能骗到那么多融资的,按理说这玩意儿应该没啥盈利能力啊。虽然货架成本低廉,但需要每天人工四处给货架补货,零售价也就普通小卖部水平,也不向企业收取租金之类的,还有商品被偷取的风险。总体来说感觉每包零食赚的那几毛、几块并不足以承担补货员每天跑的成本以及商品被偷取、损坏的风险 感觉和现今的共享单车行
Yii2-GridView添加导出功能
首先我们需要用Composer安装一个导出组件:kartik-v/yii2-export 这个组件依赖一个PDF导出组件kartik-v/yii2-mpdf,100多M,所以安装可能很慢,需要耐心等候 不过新版本好像默认不依赖此PDF组件了 安装完毕后,打开config/web.php,给$config变量添加一个成员: ‘modules’ => [ ‘gridview’ => [ ‘
浅谈PHP中打开文件(fopen)的一些坑
准备自己实现一个基于文件的简单缓存类,用于一些小外包项目。原本只是打算按照特定的JSON格式进行存储,然后用很方便的两个函数 file_get_content 和 file_put_content 进行读写 后来想给缓存类加个自增/减的方法,用来做简单的统计之类。如果考虑到瞬间并发情况,为了防止两个请求互相干扰,就必须得上文件锁了 首先是设置缓存,这个没啥难度: 首先一个$h = fopen($p