|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 6 ![]() |
Bonjour à tous,
Voici le contexte: J'ai eu application qui fonctionne correctement sur easyphp1.6, nous utilisons maintenant easyphp1.8 mais on a configuré les paramètres de php.ini de manière à ce que cela fonctionne. Nous utilisons un serveur où figure 3 applications différentes. Mais et voici mon problème, j'ai des erreurs avec le code sql: load data infile chemin... into table FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES Je l'utilise dans la fonction php mysql_query qui me retourne false. Je pensais que l'administrateur ne me donne pas tous les droits et particulièrement le droit file_priv de la table user de la base de données mysql. Est-ce que je me trompe? Faut-il avoir ce privilège pour importer des fichiers csv dans une base de données mysql? |
|
|
00
|
|
|
#2 | |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Citation:
Pour importer un fichier situé sur le poste client, tu peux utiliser LOAD DATA LOCAL INFILE (sans droit particulier).
__________________
Pensez au bouton
|
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 6 ![]() |
Merci c'est exactement cela.
Je vois un peu plus clair. Le script PHP sauvegarde le fichier à importer dans le dossier www/Eservices(nom de l'application)/import/ puis il importe à partir de ce dossier le fichier dans la base de données. Donc, il ne faut pas que j'utilise le LOCAL (si j'ai bien compris) et que je mets le privilège file_priv sur Yes. Peux-tu m'expliquer le role de ces paramètres? |
|
|
00
|
|
|
#4 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
En fait si ton serveur Web tourne sur la même machine que le serveur MySQL, tu peux utiliser les deux (avec LOCAL et sans LOCAL).
Si le serveur Web est séparé, tu es obligé d'utiliser LOCAL.
__________________
Pensez au bouton
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 6 ![]() |
Oui, je dois donner des détails supplémentaires.
En fait, on utilise une application écrit sous php testé sur easyphp 1.6. Depuis 1 an, on travaille en local et aucun problème n'est apparu mais la base a grossi et pour des raisons de sécuriter, on a demandé un serveur sous easyphp 1.8 à notre service informatique. Après s'être battu avec le service pour trouver la bonne configuration du fichier php.ini pour faire fonctionner correctement l'application sur 1.8, on est tombé sur ce problème d'importation. La configuration actuelle est la suivante: un serveur utilisant easyphp 1.8 où l'application et les données sont sauvegardées. 4 ordinateurs qui utilisent l'application. Donc, si j'ai bien compris, vu que le script php sauvegarde le fichier sur le serveur, il faut absolument le paramètre file_priv. J'espère que j'étais clair. Dis moi si je me suis trompé. Merci |
|
|
00
|
|
|
#6 | |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Citation:
En fait comme je te disais, tu peux utiliser soit LOAD DATA soit LOAD DATA LOCAL puisque les serveurs MySQL et Web sont sur la même machine (regroupés dans EasyPHP). Le problème du paramètre file_priv ne se pose que dans le cas d'un LOAD DATA INFILE (il faut rajouter ce privilège pour que l'utilisateur MySQL lise le fichier sur le serveur). Avec un LOAD DATA LOCAL INFILE, c'est le client (donc le script PHP) qui lit le fichier et le transmet au serveur MySQL. Je te conseille plutôt cette méthode puisqu'il n'y a aucun droit spécial à configurer...
__________________
Pensez au bouton
|
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 6 ![]() |
Merci pour tes réponses, je commence à comprendre.
Là je fais un test sur un portable en dehors du réseau pour plus de sécurité et je comprends pas ce qui arrive. J'ai donc easyphp 1.8 bien configuré et j'ai donc mis LOAD DATA LOCAL INFILE et ca ne fonctionne pas mais dès que je mets le paramètre file_priv , l'importation fonctionne. Là aussi, c'est un cas particulier? Alors, je me dis que même pour l'application sur le serveur et la base, je dois mettre file_priv pour être sûr. Y-a-t-il un risque pour les autres application du serveur si on met ce paramètre sur Yes (ce sont des arguments pour que le service informatique suive)? Merci. Dernier détail pour me rassurer: Entre easyphp 1.6 et 1.8 pour que l'application développée sur 1.6 fonctionne sur 1.8, il faut que: register_global = on error_reporting = E_ALL & ~E_NOTICE allow_call__time_pass_reference = on S'il me manque des points, peux-tu me les indiquer? Sinon, on fait çà pour faciliter le travail du service informatique. Merci. |
|
|
00
|
|
|
#8 | |||
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Citation:
Citation:
Citation:
__________________
Pensez au bouton
|
|||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 6 ![]() |
Merci.
Je pense avoir tout au main pour régler ce problème. Merci et peut être à bientôt. |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 6 ![]() |
Après quelques essais avec l'administratuer et le service informatique, totu fonctionne correctement dans l'importation des fichiers dans la base.
C'était bien le file_priv qui posait problème. Avec file_priv sur Y, tout est OK. Merci encore pour ces indications. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com