标签 php 下的文章

最近服务器上的 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。中间遇到的几个问题,也记录一下。

- 阅读剩余部分 -

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都删不掉。

- 阅读剩余部分 -

题目:有金额M元,给N个人发红包,最低0.01元,完全随机,不设上限,全部金额都需发放出去。

思路:可以借鉴发牌的算法,将金额以最小发放单位0.01元换算,等价于M*100张牌。那么我们要做的是,从M*100张牌里边随机抽出N-1张牌,计算这N-1张牌中间隔出来的N个区间的差值即可。

- 阅读剩余部分 -

Composer作为一个常用的php包管理工具,已经成为PHP项目包管理事实上的标准了。大部分开源的php项目,都可以从里边找到composer.json的身影。基本的知识本文就不介绍了,而是挑选一些日常开发中遇到的比较棘手又常见的几个问题予以记录。如:使用镜像、使用私库、如何使用非http项目、如何修改版本号等等。

使用镜像

使用composer的第一要素就是配置中国镜像,否则,你将一直抱怨这个产品根本没法使用,你对composer的影响就会一直处于停摆状态。

一般我们使用https://packagist.phpcomposer.com作为最经典的配置了。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

- 阅读剩余部分 -

PHPUnit 是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。

单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。

总之一句话,使用 phpunit 进行自动测试,会使你的代码更健壮,减少后期维护的成本,也是一种比较标准的规范,现如今流行的PHP框架都带了单元测试,如Laraval,Symfony,Yii2等,单元测试已经成了标配。

另外,单元测试用例是通过命令操控测试脚本的,而不是通过浏览器访问URL的。

这里以phpstorm为例,说明如何利用phpunit做单元测试。

- 阅读剩余部分 -

kvm生成一台新机器后,并不能自动分配新的ip。本文介绍了基于php语言,结合libvirt一系列的工具,实现通过命令行对虚拟机进行克隆和自动ip分配的方案。

前置条件

克隆来源的domain里边的文件已经被删除:/etc/udev/rules.d/70-persistent-net.rules。

- 阅读剩余部分 -