centos6下PHP+oracle环境部署

公司PHP测试服务器出现宕机,运维同事早先没有做镜像备份,硬盘也没法回复,只能重新搭建新的测试环境。作为一个PHP门外汉,开始了PHP环境搭建之旅。

centos6下PHP+oracle环境部署_第1张图片
Paste_Image.png

PHP应用服务器部署(源码安装)

使用yum安装虽然方便,但这取决于源的版本,有些源若版本较低会出现PHP在支持数据库驱动方面支持不足,特此选择用源码安装。

  1. 下载PHP源码
  • php download
    http://php.net/downloads.php/
  • 下载
    wget http://php.net/get/php-5.5.38.tar.gz/from/a/mirror

2.编译和安装PHP源码
tar -zxvf php-5.5.38.tar.gz
cd php-src-php-5.5.38
./buildconf --force
配置相关参数
/configure --enable-fpm --enable-mbstring --with-mysql --with-mcrypt --enable-inline-optimization —disable-debug
./configure --enable-fpm --enable-mbstring --with-mysql --with-mcrypt --enable-inline-optimization --disable-debug
make
make install
cp ~/php-src-php-5.5.32/php.ini-production /usr/local/lib/php.ini

编译过程要求依赖相关包,比如gcc,autoconf等,根据提示使用 yum安装对应依赖包

3.配置PHP-FPM服务

  • PHP-FPM启动文件
    cp ~/php-src-php-5.5.32/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  • 授权
    chmod 775 /etc/init.d/php-fpm
  • PHP-FPM配置文件
    cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

oracle客户端安装

  1. 下载
  • download source
    [oracle下载](http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092537-zhs.html/)
  • npm下载相关包
    使用wget下载需要的版本,尽量使用最新版本
    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
    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
  1. 安装
    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
    rpm –ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

第一个 RPM 将 Oracle 库放在 /usr/lib/oracle/11.2/client64/lib
中,第二个 RPM 在/usr/include/oracle/11.2/client64
中创建头

oracle驱动oci8安装

oci8为PHP连接oracle的驱动,必不可少。

  1. 下载
  • download source
    oci8地址
  • tar download
    wget
  1. 安装
    tar -xzf oci8-1.4.7.tgz
    cd oci8-1.4.7
    phpize
    ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib
    make install
  2. 启用 OCI8 扩展
    编辑 php.ini并使用以下语句
    extension=oci8.so

如果指定extension_dir路径指向 oci8.so文件的安装目录,则可直接如上配置,否则指定决定路径

  1. LD_LIBRARY_PATH设置
    设置环境变量,在配置文件/etc/profile或~/base_profile添加
    /usr/lib/oracle/11.2/client64/lib

启动PHP

service php-fpm start

验证已安装 PHP OCI8 扩展

检查 OCI8 配置,创建一个简单的 PHP 脚本 phpinfo.php


使用相应的 URL(例如 http://localhost/phpinfo.php
)将此脚本加载到浏览器中。浏览器页面将包含“oci8”部分,其中显示“OCI8 Support enabled”并列出可以配置的 OCI8 选项.

连接到 Oracle 数据库

要创建连接,传递 Oracle 用户名和口令凭证作为 oci_connect()
的两个参数。Oracle 数据库名称连接标识符必须用于第三个参数,因为与 Instant Client 链接的程序始终被视为“远离”任何数据库服务器,并需要向这些程序告知要连接到的数据库实例。对于已建立的 Oracle 数据库,连接字符串可能是众所周知的。对于新系统,此信息由 Oracle 安装程序在安装数据库时提供。安装程序应该已经为您配置 Oracle 网络并创建服务名称,如 orcl。

将连接信息传递给 PHP 有多种方法。此示例使用 Oracle 的简单连接语法连接到在 mymachine 上运行的 orcl 数据库服务中的 HR 模式。不需要 tnsnames.ora
或其他 Oracle 网络文件:
$conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/orcl');

有关简单连接语法,请参见 Oracle 的使用简单连接命名方法文档。
在新数据库中,需要解除对 HR 用户等演示模式的锁定并为其提供口令。也可通过在 SQL*Plus 中以 SYSTEM 用户身份连接并执行以下语句来完成此操作:ALTER USER username IDENTIFIED BY new_password ACCOUNT UNLOCK;

使用 PHP OCI8 和 Oracle

试用简单的脚本 testoci.php
修改连接凭证以满足您的数据库要求,并将其加载到浏览器中。此示例列出了用户 HR 拥有的所有表:

\n";
    while (($row = oci_fetch_array($stid,OCI_ASSOC+OCI_RETURN_NULLS)) != false) { 
    echo "\n"; 
    foreach ($row as $item) { 
      echo " ".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."\n"; 
    } 
    echo "\n";
  }
  echo "\n";
?>```
>注意:需要在/etc/hosts中添加`127.0.0.1 主机名`,在PHP连接oracle中默认会根据主机名去访问,否则会遇到“ORA-24408: could not generate unique server group name
”错误。[stackoverflow传送门](http://stackoverflow.com/questions/10484231/ora-24408-could-not-generate-unique-server-group-name)

本以为是否配置host不会影响PHP连接oracle,结果转了一圈花了几个小时时间发现只要配置host就解决问题,害的两次重新安装PHP,浪费大量时间,以此纪念。

你可能感兴趣的:(centos6下PHP+oracle环境部署)