最近服务器上的 PHP 7.0.14 让我有点不放心。

原因很简单:PHP2Shell 漏洞出来以后,继续让一个多年没有维护的 PHP 版本承担线上请求,多少有点心存侥幸。PHP 官方公告中提到的两个漏洞是 CVE-2026-109618 和 CVE-2026-109619,前者与 OOM 处理有关,后者与旧的全局状态处理有关。攻击者不需要登录,在特定请求条件下就可能触发内存破坏,进一步以 PHP-FPM 进程的权限执行代码。

官方已经把 PHP 8.2.35 列为修复版本,相关资料可以看这里:

这件事情本来只是一次 PHP 安全升级,做到后来,却变成了 Typecho 1.1 升级 Typecho 1.3。中间遇到的几个问题,也记录一下。

阅读剩余部分

技术可以解决大部分的问题,但是只是从技术层面上出发去考虑,往往具有较大的局限性,且容易出现吃力不讨好的局面。因为,技术最终是用来解决实际问题的,需求源自实际场景,目标也是实际场景,单纯去完成一个纯技术的动作,很容易指标不治本,缺少足够的健壮性和可扩展性。

阅读剩余部分

今年GORM发布了新的版本V2,但是从V1到V2发生了一些破坏性的更新。在官网看的话,大部分关于V2特性的介绍都是有中文版本的,唯独对于破坏性的更新没有予以翻译,本文是直接从官网翻译过来的,有不妥之处还请指正。

原文链接:https://gorm.io/zh_CN/docs/v2_release_note.html#%E7%A0%B4%E5%9D%8F%E6%80%A7%E5%8F%98%E6%9B%B4

阅读剩余部分

在mac 10.15.16系统上,编译swoole 4.4.18的时候,在执行make命令时,出现错误提示:`no member named 'signbit' in the global namespace
using ::signbit;`,使得编译总是失败。

对于想在mac使用swoole的开发者而言,多少算是一种挫败。本来兴致冲冲想在mac身上研究一下swoole,却在编译swoole的php插件时栽了这么一个跟头。为了解决这个拦路虎,和朋友问了一圈,无解,又在在网上搜了很多文章,始终未找到解答。

不过,只要真心想解决问题,并且为之努力,机遇还是会到来的。

阅读剩余部分

最近团队决定要统一使用hyperf。工欲善其事,必先利其器。要提高开发效率,TDD必不可少,这就需要能有一套完美的单元测试支持工具。相比传统的php开发,hyperf基于swoole,需要满足其不同的特征,要想完美地搞定其单元测试,需要完成这么几件事情:

  1. phpunit需要支持协程,才能正常运行下去
  2. swoole需要支持openssl,才能支持对api接口进行单元测试
  3. 支持单步跟踪。这点需要有xdebug的支持,同样,它也要支持协程
  4. 支持单测覆盖率。

下面来分别介绍如何解决这几个问题。

阅读剩余部分

mac升级到10.15.4后,系统自带装了php7.3,但是有个问题,竟然不能装swoole插件,于是想删掉系统的php。

$ which php
/usr/bin/php
$ cd /usr/bin/
$ sudo rm -rf php php-config phpdoc phpize
rm: php: Read-only file system
rm: php-config: Read-only file system
rm: phpize: Read-only file system

出现了Read-only file system的提示,用sudo都删不掉。

阅读剩余部分

Audio Cache

原文地址:https://github.com/luanpotter/audioplayers/blob/master/doc/audio_cache.md

为了使用本地资源,你必须使用AudioCache类。

Flutter没有提供对资源播放音频的简单方法,而这个类则提供了相应的方法。实际上它会将资源复制到设备中的一个临时文件夹中,然后将其作为本地文件播放。

它跟踪复制出来的文件,以缓存的形式工作,你可以毫不延迟地重播它们。你也可以实现对文件的预加载。

每个实例都有自己独立的缓存,因此,如果想优化加载时间,可以创建一个单例。

阅读剩余部分

目前在flutter中,并没有官方提供的音频播放插件,因此,需要我们自己去寻找第三方的widget或者自己开发。在google的时候,如果搜索“flutter audio”,那么出来的第一条结果一般都是“audioplayers | Flutter Package - Dart Pub”。本文主要是翻译该项目的说明文件,用来简化大家对它的理解。

原文地址:https://github.com/luanpotter/audioplayers/blob/master/README.md

AudioPlayers

一个可用来同时播放多个音频文件的Flutter插件,兼容Android和iOS。

阅读剩余部分