Drupal 4.7.2 - Impossible de se connecter

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je viens d'installer une version 4.7.2 de Drupal avec une base de donnée MySql "fraiche".

Les comptes utilisateurs se créent bien.
Mais dés que l'on se déconnecte : impossible de se connecter à nouveau ! Il faut redemander l'envoi d'un nouveau password.

Configuration :
- Drupal 4.7.2
- PHP 5.x
- MySQL 4.0
- IIS 5.x
Navigateur : IE 6

La supression des cookies ne change rien...

Avez vous une piste ?

Bonsoir,

J'ai fait une ré-installation identique sur un serveur SUN Solaris avec Apache (au lieu de Windows 2000 avec IIS) et là - miracle ! - plus de soucis pour les mots de passes. Si qq peut m'expliquer pourquoi ce sera sympa !

Par contre j'ai hérité de nouveaux problémes : j'ai 2 sites installés de façon identiques sur ce serveur SUN à partir de la même distribution Drupal 4.7.2 et :
- sur l'un des 2 sites le module tracker.module n'affiche aucun résultat...
- sur les 2 sites je suis incapbale de retrouver quoi que ce soit avec search.module.

Le journal des sites est pollué par des tas de message du type "Erreur de syntaxe pr?de '0093400262541434 WHERE word = 'plans'' ?a ligne 1 query: UPDATE search_total SET count = 0,0093400262541434 WHERE word = 'plans' dans /philippe/includes/database.mysql.inc à la ligne 120."

Des pistes ???

Il y a un problème de "localisation" quelque part. Drupal génère un entier flottant dans la requête MySQL en séparant partie entière et partie décimale avec une virgule au lieu d'un point :

0,0093400262541434 au lieu de 0.0093400262541434

Je n'arrive pas bien à voir où ce changement a lieu. Peux-tu me donner des détails sur ton installation (version d'Apache, de PHP et de MySQL, locales activées: normalement le résultat de la commande "locale")?

  • DamZ

Bon on dirait bien que cela vient de là. Peux-tu tester si cela fonctionne chez toi lorsque tu modifies le fichier includes/database.inc, lignes 155-156:

<?php
 
case '%f':
   return (float)
array_shift($args);
?>

en

<?php
 
case '%f':
   return
number_format(array_shift($args), 10, ',', '');
?>
  • DamZ

Bonjour et bonne année !

je pense qu'il s'agit du "/sites/default/settings.php" ???

je ne vois pas de ligne spécifique dans mon fichier et je ne comprend pas bien les explications données dans le message cité en référence. Ou donc a t il ajouté sa solution :

a possible fix would be to set the locale to C before the query and set it back afterwards.

2 submitted by killes@www.drop.org on August 15, 2006 - 16:02

Status: active » won't fix

I began wondering why nobody else has had the problem...

Turned out I set my locale to DE in my settings file. I guess that was a remnant from my tries with the mod_gettext extension.

J'ai ouvert un "issue" sur drupal.org. Mais j'ai peu d'espoir de le voir traiter (vu que tous mes précédents sont restés sans suite...).

je pense qu'un module additionnel peut être à l'origine du probleme. Je n'ai donc plus qu'à reprendre step-by-step une installation fraiche de la 4.7.4 et voir à partir de quel module opptionnel ça bug...

Drupal est vraiment un super CMS masi avec un support vraiment médiocre et une documentation presque inexistante... Ceci dit je peux aussi me mettre sérieusement à PHP et tenter de trouver tout seul mais je n'ai pas trop de temps pour cela.

Donc un super grand merci pour le temps que tu me consacres.

A propos le site concerné est là si tu veux y jetter un coup d'URL :

http://derieppe.club.fr/philippe

Le site est encore en cours de refonte pour ce qui du theme et j'y ré-introduit petit à petit les pages issues de mon ancien site fait uniquement en HTML. Il y a donc encore pas mal de détails à revoir et de choses à améliorer.

Le support s'améliore... doucement. Il est bien meilleur en anglais qu'en français, bien entendu, mais nous travaillons à améliorer tout cela.

En particulier, il y a une bonne FAQ sur drupal.org.

Pour ton problème, essaye de rechercher "setlocale" dans tous les fichiers de ton installation de Drupal. Peut être qu'un des modules que tu as installé modifie la configuration des locales.

Sur ce, je te souhaite une bonne année 2007.

Bonjour,

je ne trouve "setlocale" que dans le fichier includes\unicode.inc dont voici le début (la fonction setlocale est utiliée au début du code)

=[Debut]===============================
<?php
// $Id: unicode.inc,v 1.17.2.1 2006/10/18 20:14:42 killes Exp $

define('UNICODE_ERROR', -1);
define('UNICODE_SINGLEBYTE', 0);
define('UNICODE_MULTIBYTE', 1);

/**
* Wrapper around _unicode_check().
*/
function unicode_check() {
$GLOBALS['multibyte'] = _unicode_check();
}

/**
* Perform checks about Unicode support in PHP, and set the right settings if
* needed.
*
* Because Drupal needs to be able to handle text in various encodings, we do
* not support mbstring function overloading. HTTP input/output conversion must
* be disabled for similar reasons.
*
* @param $errors
* Whether to report any fatal errors with form_set_error().
*/
function _unicode_check($errors = false) {
// Set the standard C locale to ensure consistent, ASCII-only string handling.
setlocale(LC_CTYPE, 'C');

=[Fin de l'extrait]================================

Des idées ?

Merci pour l'aide !

En fait il y avait une erreur dans ma suggestion précédente. Il fallait lire :

<?php
 
case '%f':
   return
number_format(array_shift($args), 10, '.', '');
?>

au lieu de :

<?php
 
case '%f':
   return
number_format(array_shift($args), 10, ',', '');
?>

Cela devrait résoudre le problème (ou tout au moins le contourner). Sinon, je ne peux que te suggèrer de mettre à jour ton PHP, les versions < 5.0.4 avaient un bug lié aux représentations de nombres à virgule flottante.

Bonjour Damz,

J'ai patché le database.inc et forcé une reindexation (admin/settings/searcg) puis lancé cron.php => pas d'erreur.

Donc je pense que tu as trouvé la cause des messages d'erreurs récurrants. MERCI !!!

Par contre en lancant une recherche j'ai maintenant 2 erreur dans le journal de log :

1--------------

Erreur de syntaxe pr?de '0034528729528 * i.relevance) + 5 * POW(2, (GREATEST(n.created, n' ?a ligne 1 query: CREATE TEMPORARY TABLE temp_search_results SELECT i.type, i.sid, 5 * (8,0034528729528 * i.relevance) + 5 * POW(2, (GREATEST(n.created, n.changed, c.last_comment_timestamp) - 1168731172) * 6.43e-8) AS score FROM temp_search_sids i INNER JOIN search_dataset d ON i.sid = d.sid AND i.type = d.type INNER JOIN node n ON n.nid = i.sid LEFT JOIN node_comment_statistics c ON c.nid = i.sid WHERE (d.data LIKE '% desproges %') ORDER BY score DESC dans /philippe/includes/database.mysql.inc à la ligne 121.

2--------------

La table 'drupal_philippe.temp_search_results' n'existe pas query: SELECT COUNT(*) FROM temp_search_results dans /philippe/includes/database.mysql.inc à la ligne 121.

Il semble donc que je ne puisse creer la table temporaire des résultats. Comme je suis hébergé, je ne peux consulter les priviléges de mon user sur les bases de données par PHPMyAdmin. je ne donc pas non plus changer la verion de PHP...

Est il envisageable de créér la table une fois pour toute et de patcher drupal en conséquence ?

Merci de ton aide.