Karp 的技术博客

近期工作上需要用到 列式存储数据库 ClickHouse.
我们服务端语言使用的 PHP. 中间发生一些比较低级的错误问题, 简单记录描述一下

这个故事除我外包含2个开发同学

接到需求是 从 网上找一个适用于PHP的轮子, 简单写个增删改查.

A同学到composer 中找了个 star和下载 最高,且php版本适配的包.

https://packagist.org/packages/hyvor/clickhouse-php#1.0.0

因为项目历史原因无法进行 composer update, 所以就直接提取 src 下目录自己改了下规则,符合我们框架自动加载规则.
A同学改完后也没测试 , 交给了B同学 .

B同学pull代码后,开发机测试结果抛错.
Xnip2024-02-20_14-50-47.png
抛错后找A同学, A同学让B同学自己去解决问题.

B同学开始各种百度了.

先是将项目composer update 的了, 导致框架中大量老代码被删除(存在下架的轮子).
然后又百度参考的文章 这个是需要编译安装php扩展. 在B同学一番操作后, 他开发机php版本从7.2 变成了5.4.

https://blog.csdn.net/qq_42151074/article/details/131881304 (避坑)

他根本没有观察扩展的指令还有舍配的 php版本.

B同学在一番操作后在工作群里描述各种不好用.

我看到后开始帮忙解决问题.

首先我需要先复现问题(并不了解B同学做了哪些工作 , 只看到上面的图).

我写了个脚本简单运行下连接库.

Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running 5.4.16, please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.
PHP Fatal error:  Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running 5.4.16, please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.
 in xxxxx/vendor/autoload.php on line 20

or autoloading on PHP <5.6 and you are

看到这个错误, 我第一时间想到的是composer 选的轮子版本太低,不支持5.6以上.
在一番操作重新选了一个支持 >=7.1 的版本. 安装后再次运行. 发现错误依旧.

我这时候试看了下php 版本

$ php -v 

PHP 5.4.16 (cli) (built: Nov 28 2023 19:19:14) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

我瞬间就懵逼了. 问B同学, 他说是我给他搞坏的, 我笑了.

通过 locate php |grep -i bin, 发现他开发机存在7.2版本, 那肯定是有人搞事情.

这时候B同学掏出他百度的文章. 还有编译安装的教程. 破案了......

在一切都恢复到 A同学给的代码版本后 , 我继续用我的脚本运行, 响应的错误是相同的.
实际上就是 A同学选型的轮子中存在其他依赖的类库. 我们框架中并没有.

那现在简单, 重新选个轮子就好了.

Xnip2024-02-20_14-49-37.png

https://packagist.org/packages/the-tinderbox/clickhouse-php-client#3.1.0

选型条件: 依赖少, 安装量高 , star高, 版本适配.

在选型过程中B同学还想要安装他的扩展, 晕死看的懂的轮子不用, 选读不到的扩展. 真是不理解.

最后的 composer选型, 也是手把手告诉 B同学需要将src文件提取后, 更改命名空间和项目路径, 匹配自动加载规则.

一次不太愉快的辅助体验.

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年01月19日 00:23
5

目录

来自 《[踩坑] 记录一次 第三方类库选择中遇到的坑》