PHP 4.0 Bug #6650 Updated: ldap_add() working in PHP3, broken in PHP4
| From: | sniper@php.net | Date: | Sun, 29 Oct 2000 04:11:49 +0000 |
| Subject: | PHP 4.0 Bug #6650 Updated: ldap_add() working in PHP3, broken in PHP4 | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-36321@lists.php.net to get a copy of this message | ||
ID: 6650
Updated by: sniper
Reported By: tengel@fluid.com
Status: Closed
Bug Type: LDAP related
Assigned To: sniper
Comments:
Fixed in CVS now.
--Jani
Previous Comments:
---------------------------------------------------------------------------
[2000-09-11 15:02:45] tengel@fluid.com
Yes! That worked (--with-ldap=/u01/app/oracle/product/8.1.6), it is now behaving normally. Doing a
"ldd" on libphp3.so and libphp4.so show that they're linked to different parts of my
Oracle installation, so something changed in the linker chain in PHP4 to introduce this problem.
So, is this still considered a bug, or is it just one of those things for the FAQ/Knowledgebase? It
*seems* like I should be able to specify an alternate LDAP while compiling Oracle - I personally
want to compile/link against OpenLDAP, as I plan on upgrading to the 2.0 release.
---------------------------------------------------------------------------
[2000-09-10 18:27:42] venaas@php.net
I can't tell you exactly why it happens with PHP 4 and not 3, but I
think this is because Oracle 8.1.6 has an LDAP library conflicting
with the OpenLDAP one. You may want to try using the Oracle
library instead, simply use
--with-ldap=/u01/app/oracle/product/8.1.6
---------------------------------------------------------------------------
[2000-09-10 15:56:09] tengel@fluid.com
Solaris 2.7, BerkelyDB 2.7.7, OpenLDAP 1.2.11, Apache 1.3.12. A test script (below) when run with
PHP4 (4.0.2) fails with a "Document contains no data"; it works perfectly fine in PHP3
(3.0.16). Nothing is changed, simply change the Apache config file to enable 3 or 4 and test:
<?php
$SERVER = "localhost";
$ROOTDN = "cn=manager, dc=fluid, dc=com";
$ROOTPW = "[MY SECRET PASSWORD]";
$ldap=ldap_connect($SERVER);
if($ldap) {
if(ldap_bind($ldap, $ROOTDN, $ROOTPW)) {
$entry["uid"]="tuser";
$entry["cn"]="Test User";
$entry["sn"]="User";
$entry["objectClass"]="person";
$dn="uid=tuser, ou=Employees, dc=fluid, dc=com";
if(ldap_add($ldap, $dn, $entry)) {
print("<H3>Entry Added!</H3>");
} else {
print("<H3>Add Failed!</H3>");
$error=ldap_error($ldap);
print("<BR>($error)");
}
print("</body></html>");
}
@ldap_close($ldap);
} else {
print("Connection Failed!");
$error=ldap_error($ldap);
print("<BR>($error)");
}
?>
Configuration params for all tools:
BerkleyDB 2.7.7:
../dist/configure
OpenLDAP 1.2.11:
env
ac_cv_func_pthread_create=no ol_cv_kthread_flag=no
ol_cv_pthread_flag=no ol_cv_pthreads_flag=no
ol_cv_thread_flag=no
CPPFLAGS="-I/usr/local/BerkeleyDB/include"
LDFLAGS="-L/usr/local/BerkeleyDB/lib"
./configure --with-ldbm-api=db2
Apache 1.3.12:
./configure
--with-layout=Apache
--prefix=/usr/local/dbdev/apache
--enable-module=most
--enable-shared=max
PHP 4.0.2
./configure
--enable-ftp
--disable-short-tags
--with-ldap=/usr/local
--with-apxs=/usr/local/dbdev/apache/bin/apxs
--with-oci8=/u01/app/oracle/product/8.1.6
--with-exec-dir=/usr/local/dbdev/php/bin
--with-config-file-path=/usr/local/dbdev/php/lib
--with-db2=/usr/local/BerkeleyDB
The php.ini file used is the default php.ini-dist, it's never been touched.
--
Troy Engel
tengel@fluid.com
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=6650