一、安装lampp
这里的php环境使用的是lammp(Download XAMPP (apachefriends.org)),我这里的是centos7的版本,有些命令和6的不一样。
这个非常简单,下载的安装包上传到服务器上,执行
./xampp-linux64-***-installer.run就可以了,注意下载自己需要的匹配自己操作系统的版本就没问题
注意修改为自己需要的时区,比如
timedatectl set-timezone Asia/Shanghai
并开启NTP
timedatectl set-ntp yes
二、安装后面可能会用到的工具(系统是最小化安装的)
如果服务器不在公网环境,记得下载一个最新的yum,做本地yum源,比如:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://IP/CentOS-Base.repo
然后安装工具
yum -y install net-tools
yum -y install nfs-utils
yum -y install gcc
yum -y install gcc-c++
yum install autoconf
三、下载额外的软件
如果要在Linux上运行php+oracle,只是这个集成环境不够,还需要额外下载三个东西
1、PHP的oci8扩展,windows版的自带oci8的扩展(比如php_oci8_11g.dll),但linux环境下并没有带,需要自己下载。官方链接:PECL :: Package :: oci8 (php.net),或者自己从https://pecl.php.net/里去找。注意一定要与自己的php版本匹配,本机是php7,所以下载的是oci8-2.2.0.tgz。如果服务器连了公网,直接用截图里的命令安装就可以:pecl install oci8***。文章后面安装部分会讲解手动下载安装编译的过程。
2.两个Oracle客户端软件
一个是basic,一个是SDK
官方链接:Instant Client for Linux x86-64 (64-bit) | Oracle 中国,或者自己在官网上找https://www.oracle.com/适合自己的版本,只要大版本不比服务端低基本就可以(根据自己oracle服务端的版本来判断
select * from v$version;或select banner from sys.v_$version;)
点击这个Instant Client,根据操作系统版本再选择一次,最后进入到客户端下载页面,低版本的在下面,需要多向下翻找一下(需要登录才能下载)
四、安装
1、rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip
把sdk的内容都拷贝到客户端的lib下,比如:
\cp -r instantclient_11_2/sdk /usr/lib/oracle/11.2/client64/lib
创建软链接
cd /usr/lib/oracle/11.2/client64/lib/
ln -s libclntsh.so.11.1 libclntsh.so
解压php的oci8扩展
tar -xvf oci8-2.2.0.tgz
编译扩展
cd /opt/oci8-2.2.0
/opt/lampp/bin/phpize
./configure --with-php-config=/opt/lampp/bin/php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
make && make install
如果是正确的,就不会报错,也可以make test 一下
配置php
vi /opt/lampp/etc/php.ini
(增加extension=oci8.so,date.timezone =PRC)
如果成功了,oci8-2.2.0/modules/oci8.so这个文件会被复制到 /opt/lampp/lib/php/extensions/no-debug-non-zts-20190902下面。
配置一下环境变量
export PATH=$PATH:/opt/lampp/bin
source /etc/profile
重启一下环境
/opt/lampp lampp restart
现在应该就可以连接oracle了
$conn = oci_connect(ORACLE_USER,ORACLE_PW,ORACLE_HOST,ORACLE_CHARSET);
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}
一般
define('ORACLE_HOST','IP:PORT/ORCL');
define('ORACLE_CHARSET','AL32UTF8');