From:             [EMAIL PROTECTED]
Operating system: Red Hat Linux release 7.0 Kernel 2.4.2 on an i686
PHP version:      4.0.5
PHP Bug Type:     OCI8 related
Bug description:  php crashes when using oci functions (8.1.7.0.1)

Hi,

Red Hat Linux release 7.0 (Guinness)
Kernel 2.4.2 on an i686
PHP 4.0.5
Oracle 8.1.7.0.1


I rebuild php with --enable-debug but it looks like that gdb can't ready the debug 
info.

php works fine if I don't use oci8 functions. And if I use oci8 functions, it just 
crashes.

Ronan

--------------------------------------------------------
php+oci8+right oracle login :
# gdb /usr/bin/php 
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...(no debugging symbols found)...
(gdb) set args oci8-test.php3
(gdb) run
Starting program: /usr/bin/php oci8-test.php3
(no debugging symbols found)...[New Thread 1024 (LWP 1677)]
X-Powered-By: PHP/4.0.5
Content-type: text/html

Looking good:-)Bye...

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 1677)]
0x40877cbc in ?? ()
(gdb) 

----------------------------------------------------------
php+oci8+wrong oracle login :
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /usr/bin/php oci8-test.php3
(no debugging symbols found)...[New Thread 1024 (LWP 1684)]
X-Powered-By: PHP/4.0.5
Content-type: text/html

<br>
<b>Warning</b>:  OCISessionBegin: ORA-01017: invalid username/password; logon denied
 in <b>oci8-test.php3</b> on line <b>10</b><br>
oci8-test.php3(10) : Warning - OCISessionBegin: ORA-01017: invalid username/password; 
logon denied

Looking good:-)Bye...

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 1684)]
0x40877cbc in ?? ()
(gdb) 

---------------------------------------------------------
[/vweb/csweb/html]# more oci8-test.php3 
<?

putenv("ORACLE_HOME=/opt/oracle/Oralce-8.1.7.0.1");
putenv("TWO_TASK=/opt/oracle/Oralce-8.1.7.0.1/network/admin/tnsnames.ora");
putenv("TNS_ADMIN=/opt/oracle/Oralce-8.1.7.0.1/network/admin");
$user = "xxxxx";
$passwd = "xxxxx";
$strDB = "xxxxx";

$db = ocilogon($user, $passwd, $strDB);

if (! $db)
{
        $err = OCIError();
        if ($err[ "code" ] == "12545")
        {
                echo "target host or object does not exist\n";
                die();
        }
}

echo "Looking good:-)";
ocilogoff($conn);
echo "Bye...";

?>

----------------------------------------------------------
php4.spec :

%define version 4.0.5
%define so_version 4
%define release 1

Name: php
Summary: PHP: Hypertext Preprocessor
Group: Development/Languages
Version: %{version}
Release: %{release}
Copyright: The PHP license (see "LICENSE" file included in distribution)
Source: http://www.php.net/version4/downloads/php-%{version}.tar.gz
Icon: php4.gif
URL: http://www.php.net/
Packager: PHP Group <[EMAIL PROTECTED]>

BuildRoot: /var/tmp/php-%{version}

%define contentdir /var/www

%description
PHP is an HTML-embedded scripting language. Much of its syntax is
borrowed from C, Java and Perl with a couple of unique PHP-specific
features thrown in. The goal of the language is to allow web
developers to write dynamically generated pages quickly.

%package oci8
Group: Development/Languages
Prereq: php = %{version}-%{release}, perl
Obsoletes: mod_php3-oci8
Summary: A module for PHP applications that use Oracle 8i.

%description oci8
The php-oci8 package contains a dynamic shared object that will add OCI8
support to PHP.

%package ldap
Group: Development/Languages
Prereq: php = %{version}-%{release}, perl
Obsoletes: mod_php3-ldap
Summary: A module for PHP applications that use LDAP.
BuildPrereq: openldap-devel
Requires: openldap

%description ldap
The php-ldap package contains a dynamic shared object that will add LDAP
(Lightweight Directory Access Protocol) support to PHP. LDAP is a set
of protocols for accessing directory services over the Internet.
PHP is an HTML-embeddable scripting language.  If you need LDAP support
for PHP applications, you will need to install this package and the php
package.

%prep

%setup
set -x

./buildconf

%build
set krb5libs="-L/usr/kerberos/lib -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err"
ssllibs="-lssl -lcrypto"
sasllibs="-lsasl $krb5libs $ssllibs"

CFLAGS="$RPM_OPT_FLAGS -fPIC"; export CFLAGS
LIBS="-lttf -lpng -ljpeg -lz"; export LIBS

compile() {
./configure \
        --prefix=%{_prefix} \
        --with-config-file-path=%{_sysconfdir} \
        --enable-debug \
        --enable-pic \
        --enable-shared \
        --enable-inline-optimization \
        $* \
        --with-exec-dir=%{_bindir} \
        --with-regex=system \
        --with-gettext \
        --with-gd \
        --with-jpeg-dir=%{_prefix} \
        --with-png \
        --with-zlib \
        --with-db2 \
        --with-db3 \
        --with-gdbm \
        --enable-debugger \
        --enable-magic-quotes \
        --enable-safe-mode \
        --enable-sockets \
        --enable-sysvsem \
        --enable-sysvshm \
        --enable-track-vars \
        --enable-yp \
        --enable-ftp \
        --enable-wddx \
        --without-mysql \
        --without-oracle \
        --without-oci8 \
        --enable-sigchild \
        --with-xml
make
}

# Build a standalone binary.
make distclean || :
compile --enable-force-cgi-redirect
cp php php_standalone

# Build a module.
make distclean
compile --with-apxs=%{_sbindir}/apxs

# Build individual PHP modules.
build_ext() {
%{__cc} -fPIC -shared $RPM_OPT_FLAGS -DHAVE_CONFIG_H \
        -DCOMPILE_DL_`echo $1 | tr '[a-z]' '[A-Z]'` \
        -DHAVE_`echo $1 | tr '[a-z]' '[A-Z]'` \
        -I. -I./TSRM -I./main -I`%{_sbindir}/apxs -q INCLUDEDIR` -I./Zend \
        -I/usr/include/freetype -I/usr/include/$1 \
        -I./ext/$1 -I./ext/$1/lib$1 \
        -I./ext/xml/expat/xmltok -I./ext/xml/expat/xmlparse \
        `grep ^CPPFLAGS Zend/Makefile | cut -f2- -d=` \
        $4 $2 -o $1.so -L.libs $3 -lc
}
build_ext ldap ext/ldap/ldap.c "-lldap -llber"
build_ext oci8 ext/oci8/oci8.c "-I/opt/oracle/Oralce-8.1.7.0.1/rdbms/demo 
-I/opt/oracle/Oralce-8.1.7.0.1/rdbms/public -L/opt/oracle/Oralce-8.1.7.0.1/lib 
-lclntsh"


%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_libdir}/{apache,php4}
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/httpd
mkdir -p $RPM_BUILD_ROOT%{contentdir}/icons
mkdir -p $RPM_BUILD_ROOT%{_bindir}
install -m 755 php_standalone $RPM_BUILD_ROOT%{_bindir}/php
install -m 755 .libs/libphp4.so $RPM_BUILD_ROOT%{_libdir}/apache/
strip -g $RPM_BUILD_ROOT%{_libdir}/apache/*
install -m 755 ldap.so $RPM_BUILD_ROOT%{_libdir}/php4/
install -m 755 oci8.so $RPM_BUILD_ROOT%{_libdir}/php4/
strip -g $RPM_BUILD_ROOT%{_libdir}/php4/*
install -m 644 php.ini-dist $RPM_BUILD_ROOT%{_sysconfdir}/php.ini
install -m 644 *.gif $RPM_BUILD_ROOT%{contentdir}/icons/

# pear and development files
%{makeinstall} -C pear peardir=$RPM_BUILD_ROOT%{_datadir}/php
for file in php-config phpextdist phpize ; do
        perl -pi -e "s|$RPM_BUILD_ROOT||g" $RPM_BUILD_ROOT%{_bindir}/${file}
done

%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT

%triggerpostun -- php <= 3.0.15-1
perl -pi -e 's|^#LoadModule php3_module|LoadModule php3_module|g' \
        /etc/httpd/conf/httpd.conf
perl -pi -e 's|^#AddModule mod_php3.c|AddModule mod_php3.c|g' \
        /etc/httpd/conf/httpd.conf

%files
%defattr(-,root,root)
%config %{_sysconfdir}/php.ini
%{_bindir}/php
%{_datadir}/php
%{_libdir}/apache/libphp4.so

%files ldap
%defattr(-,root,root)
%{_libdir}/php4/ldap.so

%post ldap
%{__perl} -pi -e "s|^;extension=ldap.so|extension=ldap.so|" %{_sysconfdir}/php.ini

%preun ldap
if [ $1 = 0 -a -f %{_sysconfdir}/php.ini ] ; then
  %{__perl} -pi -e "s|^extension=ldap.so|;extension=ldap.so|" %{_sysconfdir}/php.ini
fi

%files oci8
%defattr(-,root,root)
%{_libdir}/php4/oci8.so

%post oci8
%{__perl} -pi -e "s|^;extension=oci8.so|extension=oci8.so|" %{_sysconfdir}/php.ini

%preun oci8
if [ $1 = 0 -a -f %{_sysconfdir}/php.ini ] ; then
  %{__perl} -pi -e "s|^extension=oci8.so|;extension=oci8.so|" %{_sysconfdir}/php.ini
fi



-- 
Edit Bug report at: http://bugs.php.net/?id=11081&edit=1



-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to