Bug #72064 [Opn->Fbk]: ldap_connect sees correct args as *uninitialized*
| From: | bishop@php.net | Date: | Tue, 20 Feb 2018 19:52:54 +0000 |
| Subject: | Bug #72064 [Opn->Fbk]: ldap_connect sees correct args as *uninitialized* | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-214059@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=72064&edit=1
ID: 72064
Updated by: bishop@php.net
Reported by: hcoin at quietfountain dot com
Summary: ldap_connect sees correct args as *uninitialized*
-Status: Open
+Status: Feedback
Type: Bug
Package: LDAP related
Operating System: Ubuntu xenial
PHP Version: 5.6.20
Block user comment: N
Private report: N
New Comment:
Given the intermittent nature, I suspect the underlying system call is being interrupted. Can you
try with LDAP_OPT_RESTART, as in:
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
ldap_set_option(NULL, LDAP_OPT_RESTART, 1);
$c=ldap_connect('ldaps://directory.foo.com');
// ... as before
Previous Comments:
------------------------------------------------------------------------
[2016-04-20 13:48:48] hcoin at quietfountain dot com
Description:
------------
Calls to ldap_connect with present and correct arguments randomly returns 'False'. Same
code run again, even in the same debug session, succeeds.
Single stepping with xdebug, examining the variables each step, shows no differences in any variable
whether the bind call then fails or works.
When it does fail, the debug log shows:
2016/04/20 07:36:49 [error] 4429#4429: *30 FastCGI sent in stderr: "PHP message: PHP Warning:
ldap_bind(): Unable to bind to server: Can't contact LDAP server in /var/www/fusionpbx/foo.php
on line 18
PHP message: PHP Stack trace:
PHP message: PHP 1. {main}() /var/www/fusionpbx/foo.php:0
PHP message: PHP 2. ldap_bind(*uninitialized*, *uninitialized*, *uninitialized*)
/var/www/fusionpbx/foo.php:18" while reading response header from upstream, client:
192.168.29.16, server: pbx, request: "GET /foo.php?XDEBUG_SESSION_START=netbeans-xdebug
HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host:
"pbx1.foo.com"
Note: the 'ldaps'. This implementation requires the server to send the caller a valid
certificate, but also requires the caller to send the server a valid certificate.
dpkg -l | egrep 'ldap|php|ssl|tls' | grep -vi codec
ii ldap-utils 2.4.42+dfsg-2ubuntu3 amd64 OpenLDAP
utilities
ii libcurl3-gnutls:amd64 7.47.0-1ubuntu2 amd64 easy-to-use
client-side URL transfer library (GnuTLS flavour)
ii libgnutls-deb0-28:amd64 3.3.20-1ubuntu1 amd64 GNU TLS
library - main runtime library
ii libgnutls-openssl27:amd64 3.4.10-4ubuntu1 amd64 GNU TLS
library - OpenSSL wrapper
ii libgnutls30:amd64 3.4.10-4ubuntu1 amd64 GNU TLS
library - main runtime library
ii libldap-2.4-2:amd64 2.4.42+dfsg-2ubuntu3 amd64 OpenLDAP
libraries
ii libssl1.0.0:amd64 1.0.2g-1ubuntu4 amd64 Secure Sockets
Layer toolkit - shared libraries
ii libssl1.0.2:amd64 1.0.2g-1+deb.sury.org~wily+1 amd64 Secure Sockets
Layer toolkit - shared libraries
ii openssl 1.0.2g-1+deb.sury.org~wily+1 amd64 Secure Sockets
Layer toolkit - cryptographic utility
ii php-cli 1:7.0+35ubuntu6 all command-line
interpreter for the PHP scripting language (default)
ii php-common 1:35ubuntu6 all Common files
for PHP packages
ii php-pear 1:1.10.1+submodules+notgz-6 all PEAR Base
System
ii php-xml 1:7.0+35ubuntu6 all DOM,
SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii php5-cli 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 command-line
interpreter for the php5 scripting language
ii php5-common 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 Common files
for packages built from the php5 source
ii php5-curl 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 CURL module
for php5
ii php5-fpm 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 server-side,
HTML-embedded scripting language (FPM-CGI binary)
ii php5-gd 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 GD module for
php5
ii php5-imap 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 IMAP module
for php5
ii php5-json 1.3.9-1+deb.sury.org~wily+4 amd64 JSON module
for php5
ii php5-ldap 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 LDAP module
for php5
ii php5-mcrypt 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 MCrypt module
for php5
ii php5-memcache 3.0.8-5build1 amd64 memcache
extension module for PHP5
ii php5-mysql 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 MySQL module
for php5
ii php5-odbc 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 ODBC module
for php5
ii php5-readline 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 Readline
module for php5
ii php5-sqlite 5.6.20+dfsg-1+deb.sury.org~wily+1 amd64 SQLite module
for php5
ii php5-xdebug 2.3.3-3+deb.sury.org~wily+1 amd64 Xdebug Module
for PHP 5
rc php5.6-phpdbg 5.6.17+dfsg-5 amd64 server-side,
HTML-embedded scripting language (PHPDBG binary)
uname -a
Linux pbx1.foo.com 4.4.0-18-generic #34-Ubuntu SMP Wed Apr 6 14:01:02 UTC 2016 x86_64 x86_64 x86_64
GNU/Linux
Test script:
---------------
<?php
$tls_cert="/etc/ldap/certs/pbx.client.rsa.midterm.pem";
$tls_key ="/etc/ldap/certs/pbx.client.rsa.midterm.key.pkcs8.pem";
#putenv("LDAPTLS_CACERT=$tls_cacert");
putenv("LDAPTLS_CERT=$tls_cert");
putenv("LDAPTLS_KEY=$tls_key");
$c=ldap_connect('ldaps://directory.foo.com');
var_dump($c);
if (ldap_set_option($c, LDAP_OPT_PROTOCOL_VERSION, 3)) {
echo "Using LDAPv3\n";
} else {
echo "Failed to set protocol version to 3\n";
}
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$d=ldap_bind($c,'cn=Harry Coin,ou=people,dc=foo,dc=com','bar');
var_dump($d);
exit;
?>
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=72064&edit=1