分类: PHP
-
网页请求参数输入反斜杠导致阿里云日志服务报错 JSON 解析失败,排查发现参数经缓存处理后转义丢失。在模板文件中尝试使用 addslashes 函数转义后引发引号解析错误,随后改用 addcslashes 函数仅转义反斜杠。测试发现双引号与换行符解析仍失败,最终调整参数同时转义反斜杠与双引号,并修正换行符处理方式。经测试 JavaScript 代码未被注入,富文本输入解析成功,问题解决。
-
本文探讨了在 PHP 7.4 中重新索引多维数组的重构实现。文章首先查看了现有代码,旨在使用数组中 name 列的值作为新键,随后指出了原实现中使用 array_combine 并非必要。最终通过将 array_column 函数的 column_key 参数设为 null,直接配合 index_key 参数完成了数组重新索引,验证结果显示符合预期,成功简化了代码逻辑。
-
文章分析了 PHP 7.4 中 json_decode 解码失败的问题。通过对比不同数据解码结果,发现错误值等于 4 即 JSON_ERROR_SYNTAX 语法错误。检查数据后发现,未加引号的模板语法导致字符串格式异常。删除相关内容后解析成功,最终明确根本解决需确保数据类型正确,即由程序生成合法的数值格式,而非简单的字符串替换。
-
在 Windows 10 环境下使用 Laravel 6 操作缓存时,因 Predis 可能被弃用而选择使用 PhpRedis PHP 扩展。配置 .env 驱动后运行报错提示未安装扩展,遂从 PECL 下载适配 PHP 7.4 TS x64 的 redis 5.3.7。将 php_redis.dll 复制到扩展目录并修改 php.ini 启用,重启服务后通过 phpinfo 确认成功。最终首页顺利获取到缓存值,且在 Redis 数据库中验证了存储结果符合预期,同时需注意解决类命名冲突问题。
-
文章针对PHP中实现文件路径名的安全验证问题进行了探讨。通过测试不同格式的请求参数,分析了新增文件成功与失败的原因,最终整理出包含前缀目录白名单、剥离目录后校验纯文件名以及扩展名白名单的验证规则。文章详细介绍了利用POSIX标准限制非法字符的实现难点,并指出当前方案对多语言字符及操作系统保留文件名的过滤存在不足。
-
本文探讨了在 PHP 中重命名数组键名的实现方法,旨在将下划线形式的键名转换为驼峰形式。文章放弃了传统的 foreach 遍历方式,转而采用 array_map 函数为数组元素应用回调函数进行转换。通过展示转换前后的数组结构对比,验证了该方案能够成功将键名调整为预期的驼峰格式,为类似需求提供了基于函数式编程的处理思路。
-
在编写 Lighthouse 5 自动化测试用例时,将单个测试方法拆分为两个后运行报错,提示 Call to undefined method Illuminate\Support\Facades\Config::set()。排查发现第二个方法中应用实例已不复存在。参考 PHPUnit 文档后,在 phpunit.xml 中设置 processIsolation 为 true,或者在运行测试时添加 –process-isolation 选项,即可实现进程隔离并解决该问题,使测试通过。
-
本文记录了在编写 Lighthouse 5 自动化测试用例时遇到的断言失败问题。在使用 PHPUnit 进行 GraphQL 查询测试时,出现了 Syntax Error 及 Failed asserting that an array has the subset Array 的报错。经过排查,发现根源在于响应数据结构中多了一层花括号导致数据无法匹配。通过调整断言逻辑匹配数组的最后一个键值并修正查询结构,最终解决了测试不通过的问题。
-
本文记录了将 Laravel 8.x 项目部署至阿里云 ECS CentOS 7.7 的过程。基于 OneinStack 环境,通过虚拟主机脚本配置 Nginx 和 SSL,利用 FTP 上传代码并连接阿里云 RDS 数据库。文章详细解决了 PHP 禁用函数限制、Supervisor 进程管理配置及队列驱动调整等问题,最终通过 Supervisor 和 Crontab 实现了队列监听与任务调度,验证了部署成功。
