Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/05/2014, à 21:39

TEXMAN

phpMyAdmin gzip import impossible

Bonjour,
sous PhpMyAdmin je n'arrive pas à importer de fichier gzippé:

Vous avez tenté d'importer un fichier dont le mode de compression (application/gzip) n'est pas supporté par votre configuration PHP ou est désactivé dans celle-ci.

config : ubuntu 14.04 LTS
Type de serveur: MySQL 5.5.37-0ubuntu0.14.04.1 - (Ubuntu)
phpMyAdmin:Version: 4.0.10deb1

j'ai trouvé cela:

Resolution

    find /usr/local/psa/admin/htdocs/domains/databases/phpMyAdmin/import.php

    Locate function\_exists('gzopen') and replace 'gzopen' with 'gzopen64'. Resulting code should looks like this:

    case 'application/gzip':
         if ($cfg['GZipDump'] && @function_exists('gzopen64')) {
                 $import_handle = @gzopen64($import_file, 'r');
    } else {

Cause

Debian 6 x64 uses zlib1g instead of zlib by default. zlib1g has different function naming: gzopen64 instead of gzopen, gzseek64 instead of gzseek etc. Since phpMyAdmin uses hard-coded check function_exists('gzopen'), it will fail in such conditions.

effectivement un:

$php -r 'var_dump(function_exists("gzopen"));'
bool(false)
$ php -r 'var_dump(function_exists("gzopen64"));'
bool(true)

Mais lorsque je mets :

if ($cfg['GZipDump'] && @function_exists('gzopen64')) 

dans

/usr/share/phpmyadmin/import.php

je n'ai plus d'erreur mais il ne se passe rien ...quelqu'un a-t-il une idée?

Hors ligne

#2 Le 25/05/2014, à 14:58

TEXMAN

Re : phpMyAdmin gzip import impossible

up merci

Hors ligne

#3 Le 25/05/2014, à 15:24

bruno

Re : phpMyAdmin gzip import impossible

Tu as une installation standard, avec les paquets officiels ? Architecture i386 ou amd64 ?

Hors ligne

#4 Le 25/05/2014, à 15:26

TEXMAN

Re : phpMyAdmin gzip import impossible

oui oui cf mon message 14.04 LTS

 uname -a
Linux texier-usbhd 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:31:42 UTC 2014 i686 i686 i686 GNU/Linux

Dernière modification par TEXMAN (Le 25/05/2014, à 18:47)

Hors ligne

#5 Le 26/05/2014, à 21:57

TEXMAN

Re : phpMyAdmin gzip import impossible

up et ???

Hors ligne

#6 Le 27/05/2014, à 07:38

bruno

Re : phpMyAdmin gzip import impossible

Je posais la question car :

phpMyAdmin:Version: 4.0.10deb1

ne semble pas être un paquet officiel, et tu ne réponds pas complètement.

J'ai bien trouvé ce bug : https://bugs.php.net/bug.php?id=53829
mais cela m'étonne qu'il ne soit pas corrigé dans Debian/Ubuntu.

Sinon pour ton code, tu ne devrais pas aller modifier les fichiers internes de phpmyadmin. Entre autres parce que tes modifications seront perdues à la prochaine mise à jour du paquet… En plus rien ne te dis que la fonction standard gzopen n'est pas utilisée ailleurs dans le code de phpmyadmin (en fait, elle est utilisée à plusieurs endroits).

Hors ligne

#7 Le 27/05/2014, à 09:23

TEXMAN

Re : phpMyAdmin gzip import impossible

Oui je suis tombé sur le même bug...Tu me conseilles quoi ?
je desinstall et reinstall phpmyadmin?
d'ailleurs en relisant le bug c'est plutôt php qui est concerné?????

Dernière modification par TEXMAN (Le 27/05/2014, à 09:32)

Hors ligne

#8 Le 27/05/2014, à 10:41

Pseudo supprimé

Re : phpMyAdmin gzip import impossible

Vous avez tenté d'importer un fichier dont le mode de compression (application/gzip) n'est pas supporté par votre configuration PHP ou est désactivé dans celle-ci.

Simple question, as-tu vérifié ?

php -c /etc/php5/apache2/php.ini -r 'phpinfo();' | grep gzip
gzip compression => enabled

grep -ri gz /etc/apache2/mods-enabled
/etc/apache2/mods-enabled/mime.conf:AddType application/x-gzip .gz .tgz
/etc/apache2/mods-enabled/autoindex.conf:AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip x-bzip2
/etc/apache2/mods-enabled/autoindex.conf:AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
/etc/apache2/mods-enabled/autoindex.conf:AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip

#9 Le 27/05/2014, à 10:44

bruno

Re : phpMyAdmin gzip import impossible

Ok je croyais ce bug corrigé depuis longtemps mais apparemment il est réapparu dans les paquets ubuntu 14.04 pour les architectures 32 bits (je n'ai pas ce bug sur une installation 64bits).

Les solutions de contournement que je vois (à part recompiler php) sont effectivement de remplacer les occurrences de gzopen par gzopen64 dans les scripts. C'est crade mais cela devrait marcher…


Pour ton code enlève les @ devant ta fonction pour voir les retours d'erreur :

$import_handle = gzopen64($import_file, 'r'); 

Si tu avais la possibilité de refaire ton installation en 64 bits ce serait quand même la meilleure solution…

Dernière modification par bruno (Le 27/05/2014, à 10:44)

Hors ligne

#10 Le 27/05/2014, à 10:58

Pseudo supprimé

Re : phpMyAdmin gzip import impossible

et franchement, pourquoi s'embêter avec phpmyadmin pour importer une bdd en gz ?!
autant utiliser mysql en ligne de commande... wink

#11 Le 27/05/2014, à 11:05

bruno

Re : phpMyAdmin gzip import impossible

@Titouan : 100% d'accord wink PhpMyadmin c'est surtout utile sur un hébergement où l'on a pas la main sur les commandes mysql.

Cependant le bug dont on parle affecte certainement d'autres application PHP (CMS ou autres) car la fonction gzopen est assez largement utilisée.
J'aurais aussi pu dire à TEXMAN de recompresser ses fichiers en bz2 wink

Hors ligne

#12 Le 28/05/2014, à 10:50

TEXMAN

Re : phpMyAdmin gzip import impossible

bon j'ai modifié comme indiqué dans le patch :

case 'application/gzip':
         if ($cfg['GZipDump'] && @function_exists('gzopen64')) {
                 $import_handle = @gzopen64($import_file, 'r');
    } else {

j'ai enlevé les @ et progrès... j'arrive à charger une table! après j'ai :

Erreur

Requête SQL: DocumentationModifier Modifier

SELECT `comment`
FROM `phpmyadmin`.`pma_column_info`
WHERE db_name = 'asptt2'
AND table_name = ''
AND column_name = '(db_comment)'

MySQL a répondu: Documentation
#1100 - Table 'pma_column_info' was not locked with LOCK TABLES 

Bon effectivement la commande SQL que je mets pour ceux qui auraient le même problème:

gzip -c -d tasauvegarde.sql.gz | mysql -uTON_UTILISATEUR -pTON_MOT_DE_PASSE -D TA_BDD

marche a tous les coups...bz2...il faut que j'aille changer tous mes scripts de sauvegarde sad

Hors ligne

#13 Le 28/05/2014, à 11:23

bruno

Re : phpMyAdmin gzip import impossible

Pour ton erreur je ne sais pas vraiment d'où cela vient… Es-tu connecté avec l'utilisateur root dans phpmyadmin ?

Pour les sauvegardes ce ne doit pas être si compliqué de chercher remplacer dans un script gzip par bzip2 wink

Hors ligne

#14 Le 28/05/2014, à 14:13

TEXMAN

Re : phpMyAdmin gzip import impossible

j'y comprend vraiment rien :
-quand j'exporte et importe à partir de phpMyadmin en .gz pas de pb.
-quand je veux importer le .gz qui vient de mes sauvegardes de mon serveur j'ai ce code d'erreur! il me restaure une base et plouf il affiche le

Erreur!
#1100 - Table 'pma_column_info' was not locked with LOCK TABLES 

???

Hors ligne

#15 Le 28/05/2014, à 14:54

bruno

Re : phpMyAdmin gzip import impossible

Je suppose que l'exportation depuis phpmyadmin se fait sans l'option LOCK TABLES, alors que ton script l'utilise (il suffit de comparer les fichiers sql générés pour le vérifier).

Par contre je ne saurais pas te dire pourquoi phpmyadmin échoue à importer des bases avec LOCK TABLES. Je suppose que c'est un problème de droits et de configuration. C'est pourquoi je te demandais si tu faisais bien cela avec l'utilisateur root.
Tu peux toujours regarder dans phpmyadmin dans l'onglet « Privilèges » si ton utilisateur (celui avec le quel tu essaies d'importer) a bien le droit d'administration LOCK TABLES.

Dernière modification par bruno (Le 28/05/2014, à 14:55)

Hors ligne

#16 Le 28/05/2014, à 23:17

TEXMAN

Re : phpMyAdmin gzip import impossible

oui mon script utilise:

LOCK TABLES 'matable' WRITE;

je l'ai supprimé pour toutes les tables de ma base et effectivement mon insert me mets bien toutes mes tables.
par contre sur les privilèges je ne voit pas ce qu'il faut faire sur ma base j'ai ces privilèges:

Utilisateur 	Client 	Type 	Privilèges 	«Grant» 	Action
asptt_admin 	% 	global 	ALL PRIVILEGES 	Non 	Changer les privilèges Changer les privilèges
asptt_admin 	localhost 	global 	ALL PRIVILEGES 	Non 	Changer les privilèges Changer les privilèges
debian-sys-maint 	localhost 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	127.0.0.1 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	::1 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	localhost 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	texier-usbhd 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges

sur phpmyadmin j'ai ceux la j'ai rajouté tous les privilèges à pma:

Utilisateur 	Client 	Type 	Privilèges 	«Grant» 	Action
asptt_admin 	% 	global 	ALL PRIVILEGES 	Non 	Changer les privilèges Changer les privilèges
asptt_admin 	localhost 	global 	ALL PRIVILEGES 	Non 	Changer les privilèges Changer les privilèges
debian-sys-maint 	localhost 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
pma 	localhost 	spécifique à cette base de données 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	127.0.0.1 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	::1 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	localhost 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges
root 	texier-usbhd 	global 	ALL PRIVILEGES 	Oui 	Changer les privilèges Changer les privilèges

Hors ligne