Fix*_*ier 5 oracle php database
我想分享一些有关我的 OCI8 安装以访问 Oracle 数据库的信息。
如果出现“ PHP 启动:无法加载动态库 'oci8.so' ”之类的错误
或“检查 Oracle Instant Client 库版本兼容性...配置:错误:未找到从 libclntsh.so 到 /opt/oracle/instantclient/libclntsh.so.*.1 的链接”
或者只是想安装 Quick&Easy OCI8 以在您的 php 和 Oracle 数据库之间建立连接,您来对地方了!
Fix*_*ier 13
第一个先决条件是工作 apache2 和 php7.2 (Ubunti 18.04) 环境。
从 Oracle 网站http://下载基本(如 Instantclient-basic-linux.x64-12.2.0.1.0.zip)和 sdk(instantclient-sdk-linux.x64-12.2.0.1.0.zip)包www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html
将这两个文件上传到您的网络服务器,您可以使用 WinSCP
在服务器上解压缩这两个文件,就我而言,您将获得一个名为“instantclient_12_2”的新文件夹
4a. 创建目标文件夹
mkdir /opt/oracle
4b. 移动并重命名 Instantclient 文件夹
mv instantclient_12_2 /opt/oracle/instantclient
4c。更改文件夹权限
chown -R root:www-data /opt/oracle
apt 安装 php7.2-dev php-pear build-essential libaio1
ln -s /opt/oracle/instantclient/libclntsh.so.12.1 /opt/oracle/instantclient/libclntsh.so
ln -s /opt/oracle/instantclient/libocci.so.12.1 /opt/oracle/instantclient/libocci.so
7a. 将即时客户端添加到 ld 配置文件
echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient.conf
7b. 更新动态链接器运行时绑定
配置文件
8a. 现在通过 pecl 安装 OCI8
pecl 安装 oci8
8b. OCI8 安装要求您提供正确的文件夹
即时客户端,/opt/oracle/instantclient
9a. 将 oci lib 添加到 cli php 配置(控制台 php)
echo "extension = oci8.so" >> /etc/php/7.2/cli/php.ini
9b. 将 oci lib 添加到 apache php 配置
回声“扩展= oci8.so”>> /etc/php/7.2/apache2/php.ini
10a。为 cli 版本设置环境变量(之后您需要重新启动服务器)
echo "LD_LIBRARY_PATH=\"/opt/oracle/instantclient\"" >> /etc/environment
echo "ORACLE_HOME=\"/opt/oracle/instantclient\"" >> /etc/environment
10b. 为apache版本设置环境变量
echo "export LD_LIBRARY_PATH=\"/opt/oracle/instantclient\"" >> /etc/apache2/envvars
echo "export ORACLE_HOME=\"/opt/oracle/instantclient\"" >> /etc/apache2/envvars
服务 apache2 重启
=PHP 连接示例=
<?php
// Create connection to Oracle, change HOST IP and SID string!
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 000.000.000.000)(PORT = 1521)))(CONNECT_DATA=(SID=XXX)))";
// Enter here your username (DBUSER) and password!
$conn = oci_connect("DBUSER", "PASSWORD",$db);
if (!$conn) {
$m = oci_error();
echo $m['message']. PHP_EOL;
exit;
}
else {
print "Oracle database connection online". PHP_EOL;
}
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25775 次 |
| 最近记录: |