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
[Corrigé 3.1.20] Apatrophe dans mail LDAP
Bonjour,
pouvez vous nous donner la veresion affiché en haut du fichier ./core/ldap.php ?
Pourrez vous essayer de remplacer :
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
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';
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']);
Code : Tout sélectionner
$sn = $db->quote($sn);
Cdt
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
CordialementFlox 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';
La modification ne fonctionne pasCode : 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 :Elle est bien présenteCode : Tout sélectionner
$sn = $db->quote($sn);
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
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
GestSup 3.1.34Test
Pouvez vous modifier le fichier ./core/ldap.php avec:
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
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']);
}
Code : Tout sélectionner
Call to undefined function T_(
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
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
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
[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
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
GestSup 3.1.34Test
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']);
}
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
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
[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
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
GestSup 3.1.34Test
par hasard est ce que l'adresse mail en question possède également des apostrophes ?
Cdt
Cdt
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
l'@mail contient une apostrophe
ex : tutu.n'om@yahoo.fr
ex : tutu.n'om@yahoo.fr
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
GestSup 3.1.34Test
ok c'est pour cela
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/