Page 1 sur 2
[Corrigé 3.1.20] Apatrophe dans mail LDAP
Posté : mar. 25 avr. 2017 11:19
par sabrinac
Bonjour,
Je constate que lorsque le nom de famille contient une apostrophe dans l'AD, la synchronisation s'arrête.
Par ailleurs quand je créée une tache planifiée pour la synchronisation automatique de l'AD, j'ai l'erreur suivante loggué dans le fichier php_error.log : PHP Fatal error: Call to undefined function T_() in D:\Wamp64\www\core\ldap.php on line 86, pourriez-vous m'aider à résoudre ce problème?
Serveur w2012
Wamp 3.0.6
GestSup 3.1.19
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 11:33
par Flox
Bonjour,
pouvez vous nous donner la veresion affiché en haut du fichier ./core/ldap.php ?
Pourrez vous essayer de remplacer :
Code : Tout sélectionner
//variable
$_GET['ldap']='1';
$_GET['action']='run';
//locales
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
else {$_GET['lang'] = 'en_US';}
define('PROJECT_DIR', realpath('../'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', '($_GET[lang]');
require_once('../components/php-gettext/gettext.inc');
$encoding = 'UTF-8';
$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
T_setlocale(LC_MESSAGES, $locale);
T_bindtextdomain($_GET['lang'], LOCALE_DIR);
T_bind_textdomain_codeset($_GET['lang'], $encoding);
T_textdomain($_GET['lang']);
Pourrez vous vérifier que cette ligne est bien présente dans le fichier :
est ce lors d'une mise à jour du nom ou à la création de l'utilisateur ?
Cdt
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:15
par sabrinac
Flox a écrit :Bonjour,
pouvez vous nous donner la veresion affiché en haut du fichier ./core/ldap.php ?
La version est 3.1.19
Pourrez vous essayer de remplacer :
Code : Tout sélectionner
//variable
$_GET['ldap']='1';
$_GET['action']='run';
//locales
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
else {$_GET['lang'] = 'en_US';}
define('PROJECT_DIR', realpath('../'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', '($_GET[lang]');
require_once('../components/php-gettext/gettext.inc');
$encoding = 'UTF-8';
$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
T_setlocale(LC_MESSAGES, $locale);
T_bindtextdomain($_GET['lang'], LOCALE_DIR);
T_bind_textdomain_codeset($_GET['lang'], $encoding);
T_textdomain($_GET['lang']);
La modification ne fonctionne pas
Pourrez vous vérifier que cette ligne est bien présente dans le fichier :
Elle est bien présente
est ce lors d'une mise à jour du nom ou à la création de l'utilisateur ?
Lors de la création de l'utilisateur
Cdt
Cordialement
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:18
par Flox
Pouvez vous modifier le fichier ./core/ldap.php avec:
Code : Tout sélectionner
if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $_SERVER['HTTP_ACCEPT_LANGUAGE']=0;
//call via external script for cron
if(!isset($rparameters['ldap_user']))
{
//database connection
require_once(__DIR__."/../connect.php");
//switch SQL MODE to allow empty values with lastest version of MySQL
$db->exec('SET sql_mode = ""');
//load parameters table
$query=$db->query("SELECT * FROM tparameters");
$rparameters=$query->fetch();
$query->closeCursor();
//variable
$_GET['ldap']='1';
$_GET['action']='run';
//locales
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
else {$_GET['lang'] = 'en_US';}
define('PROJECT_DIR', realpath('../'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', '($_GET[lang]');
require_once(__DIR__.'/../components/php-gettext/gettext.inc');
$encoding = 'UTF-8';
$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
T_setlocale(LC_MESSAGES, $locale);
T_bindtextdomain($_GET['lang'], LOCALE_DIR);
T_bind_textdomain_codeset($_GET['lang'], $encoding);
T_textdomain($_GET['lang']);
}
est toujours présente ?
Je ne reproduit pas le problème de mon coté pouvez vous activer le mode debug temporairement et nous donner les messages d'erreurs affichés ?
Cdt
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:30
par sabrinac
L'erreur n'est plus la même, voici ci-dessous les messages
[25-Apr-2017 13:22:50 Europe/Paris] PHP Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in D:\Wamp64\www\core\ldap.php on line 36
[25-Apr-2017 13:22:50 Europe/Paris] PHP Warning: require_once(../components/php-gettext/gettext.inc): failed to open stream: No such file or directory in D:\Wamp64\www\core\ldap.php on line 42
[25-Apr-2017 13:22:50 Europe/Paris] PHP Fatal error: require_once(): Failed opening required '../components/php-gettext/gettext.inc' (include_path='.;C:\php\pear') in D:\Wamp64\www\core\ldap.php on line 42
Je relance en mode debug le chargement ldap et vous poste le résultat
Cordialement
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:31
par Flox
if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $_SERVER['HTTP_ACCEPT_LANGUAGE']=0;
//call via external script for cron
if(!isset($rparameters['ldap_user']))
{
//database connection
require_once(__DIR__."/../connect.php");
//switch SQL MODE to allow empty values with lastest version of MySQL
$db->exec('SET sql_mode = ""');
//load parameters table
$query=$db->query("SELECT * FROM tparameters");
$rparameters=$query->fetch();
$query->closeCursor();
//variable
$_GET['ldap']='1';
$_GET['action']='run';
//locales
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
else {$_GET['lang'] = 'en_US';}
define('PROJECT_DIR', realpath('../'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', '($_GET[lang]');
require_once(__DIR__.'/../components/php-gettext/gettext.inc');
$encoding = 'UTF-8';
$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
T_setlocale(LC_MESSAGES, $locale);
T_bindtextdomain($_GET['lang'], LOCALE_DIR);
T_bind_textdomain_codeset($_GET['lang'], $encoding);
T_textdomain($_GET['lang']);
}
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:49
par sabrinac
Voici le message d'erreur en mode debug lors de la synchronisation via le bouton
[25-Apr-2017 13:44:37 Europe/Paris] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '
XXX@XXX.fr,'')' à la ligne 1' in D:\Wamp64\www\core\ldap.php:437
Stack trace:
#0 D:\Wamp64\www\core\ldap.php(437): PDO->exec('INSERT INTO tus...')
#1 D:\Wamp64\www\admin\user.php(903): include('D:\\Wamp64\\www\\c...')
#2 D:\Wamp64\www\admin.php(26): include('D:\\Wamp64\\www\\a...')
#3 D:\Wamp64\www\index.php(660): include('D:\\Wamp64\\www\\a...')
#4 {main}
thrown in D:\Wamp64\www\core\ldap.php on line 437
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:52
par Flox
par hasard est ce que l'adresse mail en question possède également des apostrophes ?
Cdt
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:54
par sabrinac
l'@mail contient une apostrophe
ex : tutu.n'
om@yahoo.fr
Re: Apatrophe dans nom LDAP
Posté : mar. 25 avr. 2017 13:55
par Flox
ok c'est pour cela