日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php错误84015,编译PHP OCI8磨难记

發(fā)布時間:2025/3/19 php 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php错误84015,编译PHP OCI8磨难记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在DELL 的Poweredge 840服務器上安裝了RedHat enterprise V3 Linux

操作系統(tǒng)。然后安裝Apache

2.0.59和PHP4.4.7,這兩個都是最新版的。編譯安裝Apache、PHP都很順利,沒有出現(xiàn)什么問題,畢竟操刀多次了。連接Oracle數(shù)據(jù)庫也正常,系統(tǒng)能運行起來。但是運行了一段時間后,發(fā)現(xiàn)系統(tǒng)不太穩(wěn)定,用著用著,就會發(fā)現(xiàn)點擊某個web畫面時,是個空白頁,無法打開該畫面,等一會兒再打開時又能正常打開了,沒有規(guī)律性。

經(jīng)過多天的不斷排查,發(fā)現(xiàn)Apache的error_logs記錄了多個重復出現(xiàn)的Notice錯誤:

*** glibc detected *** double free or corruption (out):

0x00000000019f4730 ***

*** glibc detected *** double free or corruption (!prev):

0x0000000001111d90 ***

*** glibc detected *** corrupted double-linked list:

0x0000000001111d50 ***

*** glibc detected *** free(): invalid next size (fast):

0x0969ef30 ***

[Mon May 08 09:41:51 2006] [notice] child pid 3065 exit signal

Aborted (6)

[Mon May 08 09:48:58 2006] [notice] child pid 4747 exit signal

Segmentation fault (11)

由于服務器CPU是Intel Xeon 3070

(3000系列)雙核64位的,而PHP是32位的程序,而Oracle10也是64位的,所以懷疑是PHP

OCI8庫的問題,與oracle

10g的接口有問題。而PHP源代碼包里帶的OCI8庫比較舊,需要下載最新的OCI8源代碼。

詳細的編譯步驟如下:(假定所有程序都在/opt目錄下)

(I)先安裝autoconf2.13,在后面需要用到,Linux系統(tǒng)本身帶的autoconf程序版本比這個新多了,但PHP就認這個,沒辦法。如果用系統(tǒng)帶的新版本autoconf程序,執(zhí)行下面的

$./buildconf --force

時,系統(tǒng)會給出很多warning提示,安全起見,還是用重新編譯安裝這個舊版本的程序。

$tar xvfz autoconf-2.13.tar.gz

$cd autoconf-2.13

$./configure --prefix=/opt/autoconf

$make

$make install

$export PATH=/home/autoconf/bin:$PATH ##這樣才能先找到舊的這個程序

(II)編譯安裝Apache

$tar xfvz httpd-2.0.59.tar.gz

$cd httpd-2.0.59

$./configure --prefix=/opt/apache2 --enable-so

$make

$make install

(III)編譯PHP和OCI8

##先解壓源代碼

$tar xfvz oci8-1.2.3.tgz

$tar xfvz php-4.4.7.tar.gz

##開始編譯了

$cd php-4.4.7

$cd

ext?##進入ext擴展庫目錄

$rm -f oci8?##將舊的OCI8庫刪除掉

$mv /opt/oci8-1.2.3 ./oci8?##將新的OCI8庫src移到此ext目錄下,并且改名為oci8

$cd ..?##向上退出到php-4.4.7目錄下

##下面這步非常關鍵哦,必須將PHP舊的configure文件刪除掉,才會重新生成,

##當時搞了一個晚上才找到這個關鍵步驟

$rm configure

##重新生成configure/configure.in等文件

$./buildconf --force

##編譯PHP的選項,可以根據(jù)需要自己增減

$./configure --prefix=/opt/php4 \

--with-apxs2=/opt/apache2/bin/apxs \

--with-config-file-path=/opt/apache2/conf \

--with-oci8=$ORACLE_HOME \

--with-gd --enable-ftp --with-zlib \

--enable-mbstring --enable-mbregex --with-gettext --with-gdbm

\

--enable-safe-mode --enable-bcmath --enable-calendar \

--enable-ctype --with-ftp --enable-magic-quotes

--enable-inline-optimization \

--with-iconv --with-xml --enable-exif

$make

$make install

到此,PHP和OCI8編譯安裝完成。在編譯PHP和OCI8之前,應該將需要用到的Oracle環(huán)境變量都配置好,如下:

export ORACLE_BASE=/home/oracle10g

export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/Db_1

export ORACLE_SID=ora10g

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib

export NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8

export NLS_CHARACTERSET=AL32UTF8

OCI8重新編譯后,系統(tǒng)運行很穩(wěn)定,apache的error_log中再沒有出現(xiàn)上面列出來的錯誤。前后花費了2個白天,一個晚上的時間啊。痛苦死,還好最后圓滿搞定,解決問題了。一句話,用革命的浪漫主義精神搞定PHP

OCI8的編譯!【2007/5/18】

總結

以上是生活随笔為你收集整理的php错误84015,编译PHP OCI8磨难记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。