PHP环境安装达梦数据库驱动实操


一、环境准备

  1. 达梦数据库安装

    • 达梦官网下载对应系统版本的DM8开发版或企业版,完成安装并确保数据库服务正常运行。
    • 安装后需记录数据库的安装路径(如Windows默认路径为D:\dmdbms,Linux为/dm/server),后续配置会用到。
  2. PHP环境要求

    • PHP版本需与达梦驱动兼容(推荐7.2+,需确认线程安全类型:TS或NTS)。
    • 通过phpinfo()查看PHP扩展目录(extension_dir)及线程安全状态(Thread Safety)。

二、Windows系统安装步骤

1. 获取达梦PHP驱动文件

  • 在达梦安装目录的drivers/php_pdo子目录下找到对应PHP版本的驱动文件(如php73_dm.dllpdo73_dm.dll),注意区分线程安全(TS)与非线程安全(NTS)版本。

2. 配置PHP扩展

  • 复制驱动文件:将php73_dm.dllpdo73_dm.dll复制到PHP的ext目录(如D:\php7.3\ext)。
  • 修改php.ini
    php.ini末尾添加以下内容(路径替换为实际驱动文件路径):
    extension=D:\dmdbms\drivers\php_pdo\php73_dm.dll
    extension=D:\dmdbms\drivers\php_pdo\pdo73_dm.dll
    
  • 添加依赖库:将达梦的bin目录(如D:\dmdbms\bin)添加到系统环境变量Path中,避免提示dmcalc.dll缺失。

3. 验证驱动加载

  • 重启Web服务器(如Apache/Nginx)或命令行执行php -m,检查输出中是否包含dmpdo_dm模块。
  • 若报错“Unable to start DM module”,需检查驱动文件版本与PHP是否匹配,或依赖库路径是否正确。

三、Linux系统安装步骤

1. 解决依赖冲突

  • 备份并删除冲突的so文件
    达梦的部分动态库(如libcrypto.so)可能与系统库冲突,需执行:
    cp -r /dm/server/bin /dm/server/bin3
    cd /dm/server/bin3
    rm -rf libcrypto.so libssl.so libtiff.so libxml2.so libxqilla.so
    
    删除对应的软链接。

2. 配置环境变量

  • 编辑/etc/profile,添加以下内容:
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/server/bin3"
    export DM_HOME="/dm/server"
    export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"
    
  • 执行source /etc/profile使配置生效。

3. 加载驱动到系统库

  • 创建配置文件/etc/ld.so.conf.d/dameng.conf,写入达梦库路径:
    /dm/server/bin3
    
  • 执行ldconfig更新库缓存。

4. 配置PHP扩展

  • php.ini中添加:
    [PHP_DM]
    extension=/dm/server/drivers/php_pdo/libphp72_dm.so
    extension=/dm/server/drivers/php_pdo/php72_pdo_dm.so
    
  • 重启PHP-FPM或Web服务,通过php -m验证驱动加载。

四、连接达梦数据库示例代码

1. 使用PDO方式连接

<?php
$dsn = "dm:host=127.0.0.1;port=5236;dbname=DAMENG";
$user = "SYSDBA";
$password = "SYSDBA";

try {
    $pdo = new PDO($dsn, $user, $password);
    echo "连接达梦数据库成功!";
    // 执行查询示例
    $stmt = $pdo->query("SELECT * FROM SYSOBJECTS");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        print_r($row);
    }
} catch (PDOException $e) {
    die("连接失败: " . $e->getMessage());
}
?>

2. 使用达梦原生函数连接

<?php
$conn = dm_connect("127.0.0.1:5236", "SYSDBA", "SYSDBA");
if ($conn) {
    echo "连接成功!";
    dm_exec($conn, "CREATE TABLE test (id INT, name VARCHAR(20))");
    dm_close($conn);
} else {
    echo "连接失败!";
}
?>

五、常见问题排查

  1. 驱动未加载

    • 检查php.ini中扩展路径是否正确,确保文件权限可读。
    • 确认PHP版本与驱动版本匹配,线程安全类型一致。
  2. 依赖库缺失

    • Windows需将达梦bin目录加入Path;Linux需通过ldconfig更新库路径。
  3. 连接超时或拒绝

    • 检查达梦服务是否启动,防火墙是否开放端口(默认5236)。

六、PHP源码编译建议

格式采用以下格式,特别是配置文件路径以及lib目录,这样依赖的so就可以放到lib目录里方便管理

./configure \
--prefix=/usr/local/php   \
--with-config-file-path=/usr/local/php/etc  \
--enable-fpm \
--with-pdo-mysql \
--with-libdir=/usr/local/php/lib


make && make install

七、参考文档

通过以上步骤,可确保PHP与达梦数据库的驱动正确安装及连接。建议在操作前备份系统配置,并根据实际环境调整路径参数。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐