centos6下PHP+oracle环境部署

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

Paste_Image.png

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

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

  1. 下载PHP源码

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. 下载
  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. 下载
  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

<?php
  phpinfo();
?>

使用相应的 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 拥有的所有表:

<?php
  $conn = oci_connect('hr', 'hr_password',  'mymachine.mydomain/orcl');
  $stid = oci_parse($conn, 'select table_name from user_tables');
   oci_execute($stid);
    echo "<table>\n";
    while (($row = oci_fetch_array($stid,OCI_ASSOC+OCI_RETURN_NULLS)) != false) { 
    echo "<tr>\n"; 
    foreach ($row as $item) { 
      echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."</td>\n"; 
    } 
    echo "</tr>\n";
  }
  echo "</table>\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,浪费大量时间,以此纪念。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容