程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
PHP 相关技术文章(第3页)
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
PHP 8.6 RC3 修掉两个自己引入的回归:fiber 里的 warning 和快 4% 的 hrtime()
编程
PHP 8.6 RC3 修掉两个自己引入的回归:fiber 里的 warning 和快 4% 的 hrtime()
2026-10-22 20:03:12
PHP 8.6 RC3 有一半的修复是在收拾 8.6 自己引入的回归:没有 php.ini 时 fiber 以 error_reporting=0 启动,官方 Docker 镜像里 fiber 内 warning 全部消失;hrtime() 因改用 CLOCK_MONOTONIC_RAW 在 WSL2 上快约 4%,且在 Linux 5.3 之前不走 vDSO;array_map 的快速路径在 strict_types=1 下开始做类型检查。文中给出复现片段、实测数据与 RC 阶段该验证什么。
PHP
版本升级
运维
性能
回归测试
支付宝要 7 个字符 success,微信要空响应体:支付异步通知的应答语义与重试时间表
编程
支付宝要 7 个字符 success,微信要空响应体:支付异步通知的应答语义与重试时间表
2026-10-22 00:03:29
同一套 JSON 响应封装发给支付宝和微信,三家全判失败:支付宝要响应体只有 success 七个字符,微信 APIv3 要 200/204 空报文,V2 要 XML return_code=SUCCESS。整理三家应答语义、25h/8 次与 24h4m 的重试节奏,以及 ACK 之前必须先落库的原因与 Go/PHP handler 骨架。
异步通知
支付回调
notify_url
接口对接
Go
PHP
幂等
PHP 8.6 的 pack/unpack 端序修饰符:一个 l< 读取小端 int32,但要小心键名
编程
PHP 8.6 的 pack/unpack 端序修饰符:一个 l< 读取小端 int32,但要小心键名
2026-10-21 21:05:23
PHP 8.6 给 pack/unpack 加上 Perl 风格的 < 与 > 端序修饰符,整数与浮点都能用,读有符号小端 int32 不必再位移修正。本文给出改写前后的对照、unpack('s<value') 键名变化这个坑,以及一次解析支付报文头的格式字符串与自查命令。
PHP
二进制协议
接口对接
给 readonly 属性加了默认值,构造函数里再赋值就抛 Cannot modify readonly property
编程
给 readonly 属性加了默认值,构造函数里再赋值就抛 Cannot modify readonly property
2026-10-21 21:03:32
PHP 8.6 允许 readonly 属性声明默认值,而默认值就是那次唯一初始化,构造函数里再赋值会抛 Cannot modify readonly property。本文给出报错现场、与 8.4 接口属性的关系、unset 报错,以及迁移时默认值该写属性还是构造参数的判断。
PHP
8.6
类型系统
PHPStan 2.3 升级笔记:WordPress 分析从 60.5s 降到 7.9s,以及新规则带来的一堆报错
代码
PHPStan 2.3 升级笔记:WordPress 分析从 60.5s 降到 7.9s,以及新规则带来的一堆报错
2026-10-20 21:32:45
PHPStan 2.3 的 Turbo 扩展、结果缓存精确失效与泛型双向收窄把 WordPress 源码分析从 60.5s 压到 7.9s;同时默认开启未使用变量检测,老项目会一次冒出大量报错。本文给出升级步骤、baseline 与 CI 缓存配置,以及哪些项目值得升。
PHPStan
PHP
静态分析
工具链
PHP 8.5.11 安全修复按优先级过一遍:FPM 的 IPv6 ACL 绕过该先处理
综合
PHP 8.5.11 安全修复按优先级过一遍:FPM 的 IPv6 ACL 绕过该先处理
2026-10-20 21:04:01
PHP 8.5.11 的安全修复按上线优先级重排:FPM listen.allowed_clients 的 IPv6 ACL 绕过取决于你用 TCP 还是 unix socket;OpenSSL 出现 SAN 不匹配回退 CN 与通配符 CN 堆溢出;HTTP stream wrapper 重定向会把 Authorization 发到另一主机。附核查命令与收紧配置。
PHP
安全运维
php-fpm
升级
PHP 8.6 部分函数应用:`?` 与 `...` 生成的闭包签名、可选性变化和报错
编程
PHP 8.6 部分函数应用:`?` 与 `...` 生成的闭包签名、可选性变化和报错
2026-10-20 21:02:49
PHP 8.6 的 partial function application 用 `?` 和 `...` 占位符让引擎直接生成闭包,省掉整段 fn 声明。本文整理它与 fn、FCC 的差别,`?` 占位参数不再继承可选性这条后续 RFC 的影响,以及 5 条常见报错原文。
PHP
PHP8.6
语法特性
微信支付查单与回调:5 秒内先验签再应答,关单前必须先查单
代码
微信支付查单与回调:5 秒内先验签再应答,关单前必须先查单
2026-10-20 20:02:26
按微信支付官方《支付回调和查单实现指引》(2026-10-13)整理:回调 5 秒内验签应答、NOTPAY 不等于支付失败、未收到回调先查单且不换 out_trade_no、关单前必须先查单(含错误码 268449538/268498689 的处理)、两套轮询查单节奏与 T+1 对账四种结果。
微信支付
支付对接
PHP
接口设计
异步通知
AES-256-GCM 字段加密后 WHERE email=? 查不到:用 HMAC 盲索引补搜索,以及 4 个上线前缺口
编程
AES-256-GCM 字段加密后 WHERE email=? 查不到:用 HMAC 盲索引补搜索,以及 4 个上线前缺口
2026-10-20 00:04:37
手机号、邮箱做字段级加密后,随机 nonce 让密文失去可比性,登录查询和唯一约束同时失效。这篇用 PHP 的 AES-256-GCM 加 HMAC-SHA256 盲索引还原等值查询,给出建表结构、索引同步陷阱,并划清哪些列(低基数、password_hash、金额、时间)根本不该加密。
敏感信息加密
AES-256-GCM
盲索引
数据脱敏
PHP
PHP 8.6 的 PASSWORD_BCRYPT_SHA256:先做 HMAC-SHA256,避开 bcrypt 的 72 字节截断
编程
PHP 8.6 的 PASSWORD_BCRYPT_SHA256:先做 HMAC-SHA256,避开 bcrypt 的 72 字节截断
2026-10-19 21:03:04
bcrypt 只读前 72 字节,长密码会被静默截断。PHP 8.6 新增 PASSWORD_BCRYPT_SHA256:先 HMAC-SHA256 再送 bcrypt,沿用 Passlib 方案。含生成/校验写法、列宽与 password_needs_rehash 迁移顺序、与旧 bcrypt 不兼容的边界。
PHP
密码哈希
bcrypt
安全
Laravel 13.36:长驻 worker 跑过一个写任务后,后面一万个任务的读都压在主库
编程
Laravel 13.36:长驻 worker 跑过一个写任务后,后面一万个任务的读都压在主库
2026-10-19 20:02:53
Laravel 13.36 允许队列 worker 在任务之间清掉粘性数据库连接。讲清 sticky 为什么把长驻 worker 的读一直钉在主库、新开关 Worker::$flushStickyConnections 怎么开、打开后复制延迟与任务依赖的代价,以及判断要不要开的三个核对点。
Laravel
PHP
队列
MySQL
读写分离
Inertia v3 上线踩的 8 个坑:409 版本冲突、303 重定向与被 CDN 吃掉的 Vary 头
编程
Inertia v3 上线踩的 8 个坑:409 版本冲突、303 重定向与被 CDN 吃掉的 Vary 头
2026-10-19 00:09:59
从 Inertia v3 的 HTTP 协议切入,拆开 X-Inertia 头、page object、409 版本冲突、302→303 转换、Vary 缓存分桶、partial reload 惰性求值与 SSR 13714 探活。每个坑给现象、原因和 curl 验证方式,面向已用 Laravel + Vue 上线、正在排查整页刷新和缓存串味的工程师。
Inertia.js
Laravel
Vue
PHP
SPA
前端路由
鉴权
PHP 8.6 批量弃用投票:31 项通过,is、let、readonly 要在 PHP 9 前改名
资讯
PHP 8.6 批量弃用投票:31 项通过,is、let、readonly 要在 PHP 9 前改名
2026-10-18 21:03:56
PHP 8.6 批量弃用 RFC 投票结果:35 项里 31 项通过。is、let、readonly、namespace、_ 成为保留标识符,symfony/http-client 依赖的 dechunk 被否,list() 停在 23:23 平票,finally 里 return 属行为变更。附可直接跑的 grep 清单。
PHP
版本升级
代码迁移
PHP 8.6.0 RC3 撤回三处「更快」改动:hrtime() 快了 4%、fiber 里警告被静音
编程
PHP 8.6.0 RC3 撤回三处「更快」改动:hrtime() 快了 4%、fiber 里警告被静音
2026-10-18 21:02:32
PHP 8.6.0 RC3 回滚了 8.6 自己引入的三处回归:fiber 内警告被静音、hrtime() 改用 CLOCK_MONOTONIC_RAW 后快约 4%、strict_types=1 下 array_map 加速路径抛 TypeError,另有 OPcache 把负零折叠。含实测表格与升级注意。
PHP
版本升级
性能
PHP 8.6 收紧 session 三个默认值:先受影响的是 SAML SSO 和跨域表单
编程
PHP 8.6 收紧 session 三个默认值:先受影响的是 SAML SSO 和跨域表单
2026-10-18 21:02:25
PHP 8.6 把 use_strict_mode、cookie_httponly、cookie_samesite 的默认值改成 1/1/Lax,SessionHandler::validateId() 也真正实现,外部提供的 session ID 会被拒。文中给出四步排查顺序、php.ini 与 Symfony 配置片段,以及为什么不建议全站放宽。
PHP
会话安全
升级踩坑
20 字限制卡住一个 👨👩👧👦:emoji 的码点、字节与 grapheme cluster
编程
20 字限制卡住一个 👨👩👧👦:emoji 的码点、字节与 grapheme cluster
2026-10-18 00:04:23
表单「20 个字」限制被一个家庭 emoji 撑爆、按码点截断后渲染成方块,是编码层最常见的错位。这篇把 emoji 的 7 种编码形式(VS16、肤色修饰、ZWJ、区域指示符、tag、keycap)和三种长度口径拆开,给出 Go/PHP/JS 按 grapheme cluster 计数与截断的可执行写法,以及 utf8mb4 列宽、排序规则与终端宽度上的边界。
emoji
Unicode
字符编码
Go
PHP
前端工程
Excel 双击 UTF-8 CSV 全是「涓枃」:BOM 写在哪一步,写了为什么还是乱码
案例
Excel 双击 UTF-8 CSV 全是「涓枃」:BOM 写在哪一步,写了为什么还是乱码
2026-10-18 00:04:03
后端导出的 UTF-8 CSV 用 Excel 双击打开中文全是「涓枃」:Excel 按系统 ANSI 代码页解码,只认文件开头的 BOM。给出 PHP/Python/Node/Go 写 BOM 的正确位置,四种「写了 BOM 反而更乱」的真实原因与字节级验证方法,以及中文文件名走 filename*=UTF-8'' 的处理方式,最后说明何时该弃 CSV 改 xlsx。
乱码
CSV导出
字符集
UTF-8
BOM
Excel
PHP
Python
Go
PHP 8.5 把 FETCH_CLASS 的构造参数改成 CUFA 语义后,实体水合会坏在哪
编程
PHP 8.5 把 FETCH_CLASS 的构造参数改成 CUFA 语义后,实体水合会坏在哪
2026-10-17 21:02:54
PHP 8.5 把 PDO::FETCH_CLASS 的构造参数改成 call_user_func_array 语义:字符串键变命名参数、自动 by-ref 包装消失、fetch 中途 setFetchMode 直接抛 Error。给最小复现、报错形态、定位命令与四种修复路径。
PHP
PDO
升级踩坑
数据库
PHP 8.5 的 #[\NoDiscard] 和 (void):让被丢掉的返回值留下一条日志
编程
PHP 8.5 的 #[\NoDiscard] 和 (void):让被丢掉的返回值留下一条日志
2026-10-17 21:02:03
PHP 8.5 的 #[\NoDiscard] 与 (void) 在支付、加锁、队列代码里的实际用法:如何让被丢弃的返回值变成可检索的告警,error_reporting 与错误处理器怎么配,和静态分析各管什么,附 8.5 弃用的机械清理命令。
PHP
8.5
错误处理
静态分析
Laravel MCP 升级 1.0:initialize 换成 server/discover,每个 POST 都要带三个 header
编程
Laravel MCP 升级 1.0:initialize 换成 server/discover,每个 POST 都要带三个 header
2026-10-17 20:04:28
Laravel MCP 1.0 升级笔记:从 composer require 到第一个 Tool 的骨架,再到最疼的三处破坏——initialize 换成 server/discover、每个 POST 要带 MCP-Protocol-Version/Mcp-Method/Mcp-Name、sessionId 被移除,以及 -32020/-32022 错误码与 PKCE 强制、client_id 变 URL 的连带改动。
Laravel
MCP
PHP
AI
Agent
OAuth
协议升级
Composer 2.10.3 修掉两条 CVE:Perforce 源地址可注入命令,bin 路径能穿出包目录
编程
Composer 2.10.3 修掉两条 CVE:Perforce 源地址可注入命令,bin 路径能穿出包目录
2026-10-16 21:03:41
Composer 2.10.3 修复两条 CVE:恶意 Perforce source URL 可在 install/update 时注入命令(需装了 p4 并用了非 Packagist 仓库),以及 bin 路径可穿出包目录、绕过早前修复。给出触发条件、受影响版本与替代缓解。
Composer
PHP
CVE
供应链安全
Symfony 8.2 开发中:Lock 属性与 RecorderHttpClient 进入主线,8.1.9 已发布
编程
Symfony 8.2 开发中:Lock 属性与 RecorderHttpClient 进入主线,8.1.9 已发布
2026-10-14 21:04:35
Symfony 8.2 开发中,已引入用 Lock 属性拒绝或延迟并发请求、RecorderHttpClient 录制回放 HTTP 交互等能力,另有定向 Cache-Control、单次签名 URL 等。梳理 8.1/8.2/7.4 LTS/6.4 的 PHP 要求与支持窗口。
Symfony
PHP
框架
新特性
版本
安全修复
PHP 8.6.0 RC3 修回的几处自伤回归:fiber 静音、hrtime 偏快、HEAD 请求漏 fd
编程
PHP 8.6.0 RC3 修回的几处自伤回归:fiber 静音、hrtime 偏快、HEAD 请求漏 fd
2026-10-14 21:03:44
PHP 8.6.0 RC3 合入的多是修回 8.6 自身引入的回归:fiber 启动把 error_reporting 设成 0 导致 warning 被吞、hrtime() 切到 CLOCK_MONOTONIC_RAW 后快约 4%、php -S 每个 HEAD 请求泄漏一个文件描述符。另记录 OPcache 折叠 -0.0 等修复与时间表。
PHP
版本更新
回归
OPcache
发布说明
Laravel AI SDK 1.1 发布:Agent Skills、Cohere 文本生成与内置工具审批
编程
Laravel AI SDK 1.1 发布:Agent Skills、Cohere 文本生成与内置工具审批
2026-10-10 21:04:32
Laravel AI SDK v1.1 支持 Agent Skills 标准(SKILL.md 目录 + HasSkills 契约 + LoadSkill 工具),新增 Cohere v2 Chat 文本生成,内置工具可 requireApproval(),failover 会跳过当前 provider 不支持的 provider 工具。本文给出各功能的用法、报错原文与升级方式。
Laravel
PHP
AI
应用
AI SDK
文本生成
技能
YAML
闭包
1.1
partial
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
8
下一页
共 8 页
到第
页
确定