分类: PHP 8.1
-
针对WordPress站点地图报错问题,通过排查发现英文地图正常而中文地图崩溃,经调试确认是WordPress内存限制过低导致资源耗尽。文章介绍了如何利用System Info插件分析内存瓶颈,解释了PHP内存限制与WordPress内存限制的区别,并通过修改wp-config.php文件提高内存限额成功修复了致命错误,最后说明了清除缓存并在Google Search Console重新提交站点地图以恢复索引的操作流程。
-
针对博客8060个中文标签的批量翻译需求,作者因Polylang缺乏直接复制功能,尝试通过PHP脚本解决。过程经历了直接修改数据库不生效的失败,通过对比手动数据发现缺失隐藏分类关联,最终转而调用Polylang官方的set_language和save_translations函数。为解决脚本运行时的内存溢出问题,采用了分页处理机制,成功在几分钟内完成了所有标签的关联生成,实现了中文标签在英文环境下的原样复制与多语言适配。
-
个人博客出现 504 Gateway Timeout,排查发现服务器因恶意扫描和分布式爬虫导致严重过载。内存被过多的 PHP-FPM 进程耗尽,引发负载飙升。通过降低 PHP-FPM 进程数以适配硬件配置,在 Nginx 层面封禁恶意扫描 IP 及爬虫 IP 段,并重启 ECS 清理积压进程,最终解决了资源耗尽问题,恢复了服务正常响应。
-
本文介绍了在 PHP 中利用 preg_replace 替换字符串敏感字符的方案。针对字符串格式可能不存在导致的问题,文章展示了初始代码实现。鉴于硬编码无法应对超过 10 种格式的扩展需求,最终将逻辑抽象为一个通用方法。通过替换前后的格式对比,验证了该方法符合预期。
-
文章记录了本地日志中出现的 preg_replace() Unknown modifier 错误。通过排查代码实现和打印日志,发现变量 $otherPattern 的值包含斜杠符号导致异常。由于该符号在正则定界符中具有特殊含义,遂对代码进行调整以避免解析冲突。最终日志不再报错,替换后的字符串格式符合预期,成功解决了该异常问题。
-
在使用 Spatie\QueryBuilder 时,请求参数中包含逗号会导致 SQL 报错,提示绑定参数数量不匹配。经检查,原因是默认将逗号分隔的字符串拆分为了多个参数。通过禁用逗号自动转换为数组的功能,确保生成的 SQL 占位符数量与绑定参数一致,最终解决了该报错问题并验证了查询结果的正确性。
-
在修改表字段类型的 PHP 实现中,发现在 Navicat for MySQL 中查看 DDL 未显示变化。即使关闭连接或数据库后重新打开,结果依然不变。最终关闭并重新启动 Navicat for MySQL 后,DDL 才更新并显示出变更。
-
针对在 Laravel 9 中验证符合 MySQL 字段类型 decimal(8,2) 的字段,本文展示了最终实现方案。通过测试 -4、0、5、999999.99、999999.990、999999.991、9999990.99、0.09、0.009、0.0000001 等多种输入值,验证结果显示失败与成功的结果均符合预期,确保了数值范围与精度的正确性。
-
本文针对使用 php-ext-xlswriter 导出 Excel 时遇到的 Class not found 报错进行排查,通过下载并配置扩展解决了依赖缺失问题。随后处理了文件创建失败和索引越界的异常,发现关联数组兼容性和文件名非法字符是导致错误的关键原因。最终通过替换文件名中的冒号并匹配正确的扩展版本,成功实现了 Excel 文件的正常导出。
-
本文记录了在 Laravel 9 中执行 Redis::set 写入 Carbon 对象时遇到的数据类型差异问题,对比了生产环境写入 Object 与测试环境写入日期时间字符串的不同表现。通过对比 .env 文件发现,差异根源在于客户端配置的不同,详细分析了 PHPRedis 扩展与 predis/predis 包在处理该操作时的具体区别,最终根据配置差异确定了问题成因。
