Warning: PHP Startup: PDO_DM: Unable to initialize module
Module compiled with build ID=API20240924,NTS,debug
PHP compiled with build ID=API20240924,NTS
These options need to match
这就是您一直拿不到可用文件的原因。
解决办法
用 Kylin10 ARM 包里的那个文件(同架构,release 版,可直接用在 UOS20 上):
ARM 版
php84_pdo_dm.so是有的,但统信 U20 的驱动包里打的是 debug 版,装到 release 版 PHP 上会报:这就是您一直拿不到可用文件的原因。
解决办法
用 Kylin10 ARM 包里的那个文件(同架构,release 版,可直接用在 UOS20 上):
选包时对一下版本号即可,例如:
dm8_*_HWarm920_kylin10_sp1_64_ent_8.1.5.60_pack18_drivers.zipdm8_*_HWarm_kylin10_sp1_64_ent_8.1.4.200_pack39_drivers.zip使用步骤
# 1) 确认 PHP 是 NTS 还是 TS php -i | grep -E "Thread Safety|PHP API" # Thread Safety => disabled → 用 php84_pdo_dm.so # Thread Safety => enabled → 用 php84ts_pdo_dm.so # 2) 放到扩展目录 cp php84_pdo_dm.so $(php -r 'echo ini_get("extension_dir");')/ # 3) php.ini 里加 extension=php84_pdo_dm.so # 4) 验证 php -m | grep pdo_dm php -r 'print_r(PDO::getAvailableDrivers());' # 应看到 [0] => sqlite [1] => dm几点说明
libdmdpi.so,请确保装了 DM 客户端,且该库在LD_LIBRARY_PATH里libphp84_dm.so是原生扩展(dm_connect()那套老接口),和php84_pdo_dm.so(PDO 驱动)可以共存,按框架需要选new PDO("dm://host:port", "user", "pass")以上组合我在 ARM(aarch64)+ PHP 8.4.0 上实测:扩展加载正常,
PDO::getAvailableDrivers()返回sqlite,dm,建表/插入/查询全部通过。