基础环境介绍
一台达梦数据库服务器
一台php+nginx服务器
基础环境都已经安装完毕
一、
达梦数据库服务器操作
把对应版本的扩展文件复制到 php服务器上面。以8.2的NTS为例
在达梦数据库的安装目录/data/dm8/drivers/php_pdo下存放php的扩展文件。
8.2对应的有两个版本针对自己的环境做选择
查看 PHP 是 NTS 版还是 TS 版,
通过 phpinfo() 配置信息中的 Thread Safety项,这个项目就是查看是否是线程安全。
如果显示结果是 enabled,一般来说应该是 TS 版,否则是 NTS 版
php服务器操作
把从达梦服务器上复制过来的文件赋 x 权限,记住路径等下要用
编辑php安装目录下的 etc/php/ini ,根据自己情况填写
[PHP_DM]
extension_dir ="/opt/dmdbms/drivers/php_pdo"
extension=libphp74_dm.so
extension=php74_pdo_dm.so
[dm]
dm.port=5236
; ; 是否允许持久性连接
dm.allow_persistent = 1
; ; 允许建立持久性连接的最大数. -1 为没有限制.
dm.max_persistent = -1
; ; 允许建立连接的最大数(包括持久性连接). -1 为没有限制.
dm.max_links = -1
; ; 默认的主机地址
dm.default_host = localhost
; ; 默认登录的数据库
dm.default_db = SYSTEM
; ; 默认的连接用户名
dm.default_user = SYSDBA
; ; 默认的连接口令.
dm.default_pw = SYSDBA
; ;连接超时,这个参数未实际的用到,等待服务器支持
dm.connect_timeout = 10
; ;对于各种变长数据类型,每列最大读取的字节数。如果它设置为 0 或是小于 0,那么,读取变长字段时,将显示 NULL 值
dm.defaultlrl = 4096
; ; 是否读取二进制类型数据,如果它设置为 0,那么二进制将被 NULL 值代替
dm.defaultbinmode = 1
; ;是否允许检察持久性连接的有效性,如果设置为 ON,那么当重用一个持久性连接时,会检察该连接是否还有效
dm.check_persistent = ON
此时可能会遇到第一个问题 Unable to start DM moudel in Unknown on line 0
解决方法 :达梦数据库安装的目录里的bin目录里的 libdmdpi.so 文件 放入 /usr/lib 目录里或者 /usr/lib64/目录里
但是紧接着就会出现第二个问题 Unable to start PDO_DM module in Unknown on line 0
我在网络找的到的解决方式都是数据库服务器与php都是部署在同一台服务器上面,只需要加一个达梦数据库bin目录的一个环境变量 就可以解决。
类似的解决办法
假定安装到/usr/local/DMDBMS 目录。完成上面修改php.ini文件后
设置环境变量 export LD_LIBRARY_PATH=/usr/local/DMDBMS/bin。
但是我们的是分开部署的,无法做到这一点。所以需要我们把达梦的bin目录整个复制到我们的php服务器上面。
之后就可以添加环境变量。
但是这里我遇到了问题,修改/etc/profile 不生效
当 source /etc/profile 只在当前终端生效
这里需要到/etc/ld.so.conf.d目录下新增dm.conf
/opt/soft/DM_bin #根据自己情况,我把达梦的bin目录复制到这里
执行命令:ldconfig 忽视报错。
到这里就可以重启php 查看dm模块安装好了
php -m 查看dm模块安装好了
放个官方文档
https://eco.dameng.com/document/dm/zh-cn/pm/php-rogramming-guide.html