|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() ![]() Inscription : décembre 2003 Messages : 375 ![]() |
Je suis paumé dans les emplacements de fichiers.
Je voudrais tout simplement le récupérer un fichier dans un répertoire 'transferts' (déposé par FTP) au moyen d'un programme PHP et le charger dans une base MySQL avec un LOAD DATA INFILE. Le répertoire par défaut de PHP (getcwd) est c:\applications\easyphp1-8\www\monsite\ (pourquoi ça m'indique un c:\... et pas un localhost\... ?) mais celui de MySQL est C:\applications\EasyPHP1-8\mysql\data\mabase\ Alors déjà là c'est mal barré : je mets le répertoire 'transferts' dans lequel des 2 ? Ensuite si j'indique un chemin complet au LOAD DATA INFILE les / disparaissent ! Donc impossible de placer le fichier ailleurs qu'à la base du répertoire par défaut. Bref, j'y comprends rien. Pour faire simple : où puis-je créer un répertoire 'transferts' connu aussi bien de PHP et MySQL et comment je peux y accéder ? |
|
|
00
|
|
|
#2 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
Un chemin de type c:\applications\easyphp1-8\www\monsite\ permet d'accéder à un fichier (inclue les répertoires) sur votre système de fichiers local. Une URL, http://localhost/monsite/ par exemple, est spécifique à un protocole (HTTP ici) et met en relation des informations ou documents avec celle-ci qui n'ont pas forcément de rapport direct avec votre système de fichiers. Comment passez-vous de PHP à MySQL précisément (avez-vous du code à nous montrer) ? Utilisez-vous des chemins relatifs (par rapport au répertoire courant) ou absolus (par rapport à la racine) ? Avez-vous éventuellement utilisé la fonction realpath afin de passer d'un chemin relatif à un chemin absolu ? PS : la documentation des requêtes LOAD DATA |
|
|
|
00
|
|
|
#3 | |||
|
Membre actif
![]() ![]() Inscription : décembre 2003 Messages : 375 ![]() |
Merci déjà pour ces précisions.
Citation:
En plus je bosse en local là, mais je dois livrer ce programme sur un serveur mutualisé alors je ne suis même pas sûr du comportement au final. Donc voilà : Code :
Mais 1) le responsable du site me dit qu'il n'a probablement pas les droits pour accéder à ces répertoires, mais uniquement aux répertoires de PHP (c:\applications\easyphp1-8\www\monsite\) 2) de toutes façons je n'arrive pas à connaître ce chemin à partir de PHP. (cf. le file_exists que j'ai dû mettre en commentaire) Au final il faudrait juste que je sache quoi passer précisemment en paramètre du LOAD DATA INFILE pour que ça fonctionne avec un fichier accessible de PHP (donc dans c:\applications\easyphp1-8\www\monsite\), et sans que ça me vire les / du chemin... |
|||
|
|
00
|
|
|
#4 | ||||||||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
J'ai créé la table suivante :
Code SQL :
J'ai créé le fichier CSV suivant (nommé clients_2007.csv) que j'ai placé dans le même répertoire que mon script (sinon adaptez le chemin) : Code X :
J'ai écrit le script PHP suivant : Code :
Code SQL :
Le fichier doit exister (sinon vous n'aurez rien entre INFILE et INTO) et vous devez disposer du droit File (ne se fixe apparemment qu'au niveau de la base via la table user de la base mysql, sur les versions 4.1 tout du moins). |
||||||||
|
|
00
|
|
|
#5 |
|
Membre actif
![]() ![]() Inscription : décembre 2003 Messages : 375 ![]() |
OK, la seule différence que je vois c'est
Code :
mysql_real_escape_string(realpath($fic)) J'essayerai de rajouter ça (j'ai pas d'accès en ce moment), merci. PS : j'ai également un soucis avec les droits FILE pour un utilisateur autre que root, mais c'est une autre histoire... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com