openGauss

开源数据库

openGauss社区官网

开源社区

PHP unixODBC Apache openGauss实现数据库的连接

手机用户89272021-01-12openGauss ODBC连接

PHP unixODBC Apache openGauss 实现数据库的连接

环境:openEuler20.03 LTS

数据库:openGauss1.0.1

PHP:5.6.30

unixODBC:2.3.0Apache:2.4.3

安装 unixODBC

具体请参考官方文档基于 ODBC 开发

注意,这里请将 unixODBC 的 lib 文件权限修改为 755,否则可能无法在浏览器上通过 PHP 访问 openGauss。特别是“psqlodbcw.la”和“psqlodbcw.so”文件。

如果 openGauss 和 unixODBC 在同一台设备时需在数据库主节点配置文件中增加一条认证规则。

不再同一台设备时需配置 SSL,也可以关闭 SSL 设置,具体请参考Data studio 普通用户采用非 SSL 的方式连接 openGauss。增加的认证规则是

host all all x.x.x.x/x sha256

如果测试时报错[UnixODBC]connect to server failed: no such file or directory,也有可能是未增加认证规则或错误增加认证规则导致的。

Apache 安装

这里是使用 EulerOS 的 yum 源直接安装 Apache 和 Apache-devel,Apache-devel 是必须安装的,不然无法使用 PHP。

EulerOSyum 源配置(在/etc/yum.repos.d/openEuler.repo 上)

[eulerosrepo]
name=EulerOS-2.0SP8 base
baseurl=http://mirrors.huaweicloud.com/euler/2.8/os/aarch64/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.huaweicloud.com/euler/2.8/os/RPM-GPG-KEY-EulerOS

PHP 安装

首先,找到 apxs 文件夹所在路径,这个文件夹的路径在接下来的配置中会用到。

find / -name apxs

其次,在 PHP 安装包解压路径下,进行./configure 配置,配置语句如下:

./configure --host=arm-linux --prefix=/usr/local/php --with-apxs2=[刚才的路径] --with-config-file-path=/usr/local/php/etc --with-unixODBC=[unixODBC路径] --enable-fpm --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-readline --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

这里配置时,缺哪个文件安装哪个文件。

完成截图如下:

配置时可能会报错 config.guess 和 config.sub 错误,修改 unixODBC 的这两个文件时间戳同 openEuler 的时间一样即可。

随后进行 make 和 make install。完成截图如下:

复制 php.ini 到 PHP 安装路径下。

cp php.ini-production /usr/local/php/etc/php.ini

修改 Apache 配置文件,在对应的位置添加以下内容。

AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps

重启 Apache,PHP 安装完成。

PHP-FPM 安装

找到 php 安装文件。

find / -name php

到 php 目录下 etc 文件内。

将 php-fpm.conf.default 复制为 php-fpm.conf 文件

cp php-fpm.conf.default php-fpm.conf

到 php 目录下 sbin 文件。

运行 php-fpm。

./php-fpm

修改 Apache 配置文件,在其中增加以下语句。

LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so  ProxyRequests Off ProxyPassMatch "^/(.*\.php(/.*)?)$" "fcgi://***.***.***.***:9000/[php文件的路径]/$1"

调用 phpinfo()显示如下:

PHP-FPM 安装完成。

配置 PHP-FPM 内 unixODBC 环境变量

找到 php-fpm.conf 文件

find / -name php-fpm.conf

打开 php-fpm.conf 文件,找到存在大量 env 的文件段落,在其中加入 unixODBC 的环境变量(根据自己的配置路径来填写)

其中 env 表示配置 fpm 内的环境变量,[]内填写环境变量名,=后填写系统环境变量名(在系统环境变量名前加$)或填写路径,例如下图:

之后,重启 PHP-FPM,即可使用浏览器通过 PHP 访问 openGauss 数据库。