分类: 编程语言
-
本文针对 PHP 报错提示 exif_imagetype 函数未定义的问题,记录了在 LNMP 2.1 环境中安装并启用 PHP EXIF 扩展的操作流程。首先通过 phpinfo 确认扩展所在目录,随后进入 LNMP 安装目录运行 addons.sh 脚本安装 exif 扩展,完成安装后重启 PHP-FPM 服务使更改生效,最后通过查看 phpinfo 验证扩展已成功启用。
-
基于 LNMP 2.1 部署后接口响应 500,查看 Nginx 错误日志发现报错提示 open_basedir 限制生效,目标文件不在允许路径内。检查项目目录下的 .user.ini 文件确认配置问题,执行 chattr 命令解除文件锁定后尝试修改,但问题依旧。最终决定删除 .user.ini 文件,改为直接在 php.ini 中进行相关设置以解决该报错。
-
本文针对在 phpMyAdmin 登录时提示 mysqli::real_connect 认证方法未知的问题进行分析。由于 MySQL 8.0 默认使用 caching_sha2_password,而 PHP 7.3.9 环境不兼容,解决方法包括在 MySQL 配置文件中添加默认认证插件设置并重启服务,以及手动更新已有 root 用户的认证插件为 mysql_native_password。完成操作后,再次登录 phpMyAdmin 即可成功。
-
针对性能环境中列表接口响应超时的问题,通过分析 SQL 发现 count 查询耗时极高。尝试通过调整组合索引的字段顺序和数量来优化查询,最终确定包含 shipping_at_gmt 等四个字段的组合索引方案。为了确保 count 查询的稳定性,决定在特定条件下强制使用该组合索引,将耗时控制在 5 秒左右。随后发现实际数据查询强制使用索引反而耗时增加,因此计划后续在 Laravel 中实现仅对 count 查询强制索引,从而将接口响应时间优化至 10 秒以内。
-
本文介绍了在 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 等多种输入值,验证结果显示失败与成功的结果均符合预期,确保了数值范围与精度的正确性。
-
针对 MySQL 8 中 IN 条件用于多个字段时查询结果为空的问题,文章记录了在 Laravel 9 中使用原生查询遇到的语法错误与列数违规报错。尽管报错 SQL 手动执行成功,但程序运行异常,最终决定放弃该 SQL 写法,调整为另一种 SQL 格式,解决了报错并使查询结果符合预期。
