centos7离线环境安装php5.6+apache2.4+oracle11客户端部署网站

2018-12-05 05:55:00
1147533288
原创
5979

背景:

客户机器centos7,无法上网,需要搭建php网站连接oracle数据库,此为背景。


解决思路:

利用一台可以上网的机器,下载需要的rpm安装包,拷贝到目标机器再行安装。


去除失败的搭建经过,搭建步骤总结如下,此搭建过程坑蛮多的~~:


1.下载多个rpm安装包(上网机执行,仅下载不安装)

# yum install epel-release

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm


使用yum list命令查看可安装的包(Packege)。

# yum list --enablerepo=remi --enablerepo=remi-php56 | grep php

yum -y install --enablerepo=remi --enablerepo=remi-php56 php php-devel php-mbstring php-mcrypt php-cli php-common php-gd php-ldap php-mysql php-pdo php-soap httpd s y s t e mtap-sdt-devel openssl --downloadonly --downloaddir /root/php56



2.目标机拷贝文件并安装

rpm-ivh*.rpm--force--nodeps

php安装完成,php -v检查版本(显示php安装的版本为5.6)。



3.安装oracle客户端

oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

# rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm


建立软链接

ln -s /usr/i n c l u d e/oracle/11.2/client64 /usr/i n c l u d e/oracle/11.2/client

ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client





4.安装PHP扩展库PDO_OCI

wget https://pecl.php.net/get/PDO_OCI-1.0.tgz

tar -xvf PDO_OCI-1.0.tgz

cd PDO_OCI-1.0


编辑config.m4:

在第10行左右找到与下面类似的代码,添加:

elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then

   PDO_OCI_VERSION=11.2

在第102行左右添加:

11.2)

   PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)

   ;;

编译:

phpize

./configure --with-pdo-oci=instantclient,/usr,11.2

make

make install

此处有坑:pdo_oci.c:34:1: error: unknown type name ‘function_entry’

修改function_entry为zend_function_entry,再次编译安装成功.



php启用pdo_oci扩展
touch /etc/php.d/pdo_oci.ini echo "extension=pdo_oci.so" > /etc/php.d/pdo_oci.ini
检查php -m


5.安装oci8(php5.6版本请不要使用过高版本,过高版本是对应php7的;此处遇坑make无法编译,下载rpm syste mtap-sdt-devel问题得到解决

# wget https://pecl.php.net/get/oci8-2.0.8.tgz

# tar -xvf oci8-2.0.8.tgz

# cd oci8-2.0.8


# phpize

# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib

# make

# make install


./configure --with-php-config=php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib


ls /usr/lib64/php/modules


php开启扩展

echo "extension=oci8.so" > /etc/php.d/oci8.ini


6.设置php.ini

此处略,包含显示错误,设置错误日志目录,设置session会话目录,设置临时目录


7.配置apache的http.conf(/etc/httpd/conf/http.conf)

此处略,包含设置端口号,网站目录,设置.htaccess权限


以下命令设置apache可以连数据库,否则报ora-12546错误
setsebool -P httpd_can_network_connect 1
重启service httpd restart


8.验证php安装正确,可以连接oracle

php -m检查已安装模块,必须包含(oci8,PDO,pdo_oci等),phpinfo()可以页面输出oci模块内容。以下代码用于测试数据库连接是否正常。


<?php
echo getenv('LD_LIBRARY_PATH');
$conn = oci_connect('portal', '123456789', '10.2.17.21/orcl');
if (!$conn) {
    $e = oci_error();
    print htmlentities($e['message']);
    exit;
}else {
    echo "连接oracle成功!";
}
phpinfo();
?>


9.php网站无法写入新文件(我按改动1无效,使用改动2的办法解决的,请直接尝试改动2


改动1:

apache对应http.conf文件

User www

Group www

groupadd www

useradd --shell /sbin/nologin -g www www

#假设网站部署在/home/www下

cd /home/www/

chown -R www:www .

改动2:

vi /etc/sysconf/selinux 设置disabled 需要重启

不重启使用

# setenforce 0,可以把SELinux暂时设定成Permissive模式。记得用root用户。

再使用 # setenforce 1 这条命令会把SELinux设定成Enforcing模式


----------------------------------------------------------------

验证收工,结束



文章分类
联系我
联系人: meepo
电话: *****
Email: 1147533288@qq.com
QQ: 1147533288