Se connecter / S'enregistrer
Votre question

Load data local infile ne fonctionne pas chez hébergeur free

Tags :
  • Free
  • Programmation
Dernière réponse : dans Programmation
26 Mai 2009 08:17:40

bonjour, je fais une petite application web qui permet d'importer des fichiers csv en bdd et vice versa. pour l'importation j'utilise la commande load data local infile. En local ça marche super bien mais sur mon hébergeur gratuit free ça ne fonctionne pas. La connexion est bonne puisque ça crée la structure la table mais le load data ne remplit absolument pas la table, elle reste vide. Et surtout je n'ai aucune erreur.
  1. $chemin_fichier=$_SERVER['DOCUMENT_ROOT'] . "/xlsmagique/liste/fichier.csv"; // Ajouter les données a la table
  2. $query="LOAD DATA LOCAL INFILE '$chemin_fichier'
  3. REPLACE INTO TABLE $nameTable
  4. FIELDS TERMINATED BY ';'
  5. LINES TERMINATED BY '\n'";
  6. $retour1=mysql_query($query) or die (mysql_error()."<br /><br />".$query);

le chemin du fichier est bien le bon puisque j'ai vérifié en faisant
echo realpath("liste/fichier.csv") et j'obtiens le meme chemin que celui que je crée.
j'ai vu ici et là qu'il y avait un problème avec cette commande chez certains hébergeurs.
comment remédier à ce problème?

merci à tous

Autres pages sur : load data local infile fonctionne hebergeur free

26 Mai 2009 13:38:29

C'est pas faute d'avoir prévenu ... tu n'y peux rien. Changement d'hébergeur pour un avec une configuration correct la configuration du serveur est un des premier paramètre à connaitre avant un développement.
26 Mai 2009 14:05:35

oups merde alors. alors je vais faire autrement merci de ta réponse quand meme.
par curiosité où voit on dans la configuration de l'hébergeur que c'est impossible?
26 Mai 2009 14:17:23

Pour PHP tu fais un phpinfo().

Sinon pour MySQL c'est un peu plus compliqué, à dire vrai je le fais plus par connaissance du sujet. LOAD DATA c'est vraiment pas fait pour être utilisé dans du code PHP car ca entre souvent dans du backup ou des choses dont le traitement est long, donc à ne pas mettre en PHP ou il y a une limite de temps d'exécution quasiment systématiquement.

Bref tu es bon pour modifier tout ca et le faire en PHP, mais fait attention au temps d'exécution. Conseil, récupère les infos sur comment est configurer ton hébergeur est fait ressembler cette configuration avec celle que tu as en local.

Typiquement, depuis hier je suis en train de patcher du code (Solr PHP Client) pour qu'il n'utilise pas file_get_contents qui est désactivé pour les url. Sur une configuration basique WAMP, c'est activé. Bref, si je n'avais pas fait attention, j'aurais eu du code qui ne fonctionnait pas en production ... Donc j'ai remplacé par du Curl mais c'est pareil, il faut avoir Curl, qui sur du mutualisé est rare.
26 Mai 2009 14:23:39

oui j'ai bien fait un phpinfo justement mais je ne trouve pas où c'est indiqué.
les modifications vont être assez rapides à faire donc c'est pas trop grave.
Mais je ne comprend pas quelque chose, si je fais un load data dans le terminal sql de phpmyadmin ça fonctionne donc pourquoi ça ne fonctionne pas dans du code php?

en tout cas merci de tes conseils clairs et limpides
26 Mai 2009 14:43:37

En général on met une configuration un peu différente pour phpmyadmin.

En tout cas, si tu te connectes avec le même user sur phpmyadmin que ce que tu as dans ton code c'est bizarre. Car c'est les droits MySQL sont fixé sur ce dernier. Mais à dire vrai, je ne connais pas exactement la configuration chez Free.

Citation :
Pour des raisons de sécurité, lorsque les fichiers sont lus sur le serveur, ils doivent se trouver dans le répertoire de la base de données courante, ou bien être lisible par tous. Pour utiliser la commande LOAD DATA INFILE sur des fichiers du serveur, vous devez avoir le droit de FILE sur le serveur. See Section 5.5.3, « Droits fournis par MySQL ».

Documentation MySQL


Bref, si tu veux tester, il faut que tu créer un user sans droit file en local et comparer si le comportement est identique que chez free chez toi. Si oui, la probabilité que ce soit ça est juste énorme.
26 Mai 2009 15:15:46

edit :
hey ça ne fonctionne plus en local c'est cool!!
maintenant est-il possible de changer les droits d'utilisateur sur phpmyadmin de free?car je ne trouve pas la base nommée "mysql" dessus pour changer mes droits
26 Mai 2009 15:27:49

ah non tu peux pas :D  il y a une raison d'avoir des droits limités. Faut trouver un autre hébergeur ou bien avoir un serveur dédié et faire ce qu'on veut dessus. (et d'ailleurs sur un dédié à mon avis tu désactiverais ce genre de chose aux gens susceptible d'avoir des droits sur ta base (genre tu sous loue un peu ton serveur)).
26 Mai 2009 15:33:06

ah bon d'accord!
tanpis alors je me sers de free comme hébergeur d'essai mais l'appli sera hébergé chez ovh et ça marche dessus.

merci de tes explications j'ai appris plein de choses
26 Mai 2009 15:43:17

tu as vérifié que ca marche dessus ? c'est un serveur dédié là bas ?
26 Mai 2009 15:57:46

oui c'est un dédié et j'ai vérifié ça fonctionne correctement
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS