ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[TOC] ## 安装 PDO ### linux 1. 从达梦的安装环境下,得到php的扩展 2. 加入达梦的安装目录为 /dm8, 把 此加入到 `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm8/bin` 中 3. 通过 `strace php -m |grep dm8` 可得到所有的依赖的 `/dm8` 依赖,放到自己所在的依赖目录下即可 ``` open("/dm8/bin/tls/x86_64/libdmdpi.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (没有那个文件或目录) stat("/dm8/bin/tls/x86_64", 0x7ffe69b1f440) = -1 ENOENT (没有那个文件或目录) open("/dm8/bin/tls/libdmdpi.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (没有那个文件或目录) stat("/dm8/bin/tls", 0x7ffe69b1f440) = -1 ENOENT(没有那个文件或目录) open("/dm8/bin/x86_64/libdmdpi.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT(没有那个文件或目录) stat("/dm8/bin/x86_64", 0x7ffe69b1f440) = -1 ENOENT(没有那个文件或目录) open("/dm8/bin/libdmdpi.so", O_RDONLY|O_CLOEXEC) = 3 open("/dm8/bin/libgssapi_krb5.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (没有那个文件或目录) open("/dm8/bin/libz.so", O_RDONLY|O_CLOEXEC) = 3 open("/dm8/bin/libsnappy.so", O_RDONLY|O_CLOEXEC) = 3 open("/dm8/bin/libdmclientlex.so", O_RDONLY|O_CLOEXEC) = 3 open("/dm8/bin/libdmutl.so", O_RDONLY|O_CLOEXEC) = 3 open("/dm8/bin/libdmos.so", O_RDONLY|O_CLOEXEC) = 3 open("/dm8/bin/libdmelog.so", O_RDONLY|O_CLOEXEC) = 3 ``` 在过滤掉 “(没有那个文件或目录)” 的提示,剩下的就是 php 需要依赖的值 ### window 通过 git bash 中的 strace 也可以过滤dll 1. 先`C:\dmdbms\drivers\php_pdo`中拿到在 `pdo74_dm.dll`放到 `php\ext` 下, 2. 拿到`C:\dmdbms\drivers\php_pdo\php74_dm.dll` 到 php 目录下 1. 添加 `C:\dmdbms\bin` 到 PATH 中 2. `strace php -m | findstr dmdbms ` 得到路径为 `C:\dmdbms\bin` dll,放到 php 的路径下 ## php pdo 指定数据库 达梦中,在pdo 指定数据库时无效的,需要在实例化后的 pdo 中自行 **`SET SCHEMA 数据库名`** ``` $dm_conf = array( 'type' => 'DM8', 'host' => '127.0.0.1:5236', //连接地址及端口 'db' => 'antdbms', //数据库名 'db_user' => 'SYSDBA', //用户名 'db_pwd' => 'SYSDBA', //密码 ); $pdo = new \PDO($dsn, $dm_conf['db_user'], $dm_conf['db_pwd'],$options); $pdo->query("SET SCHEMA ".$dm_conf['db']); $exec=$pdo->query('select * from hs_user'); ```