Aller au contenu

[RESOLU]Copier un fichier en php


pathos_01

Messages recommandés

Bonjour,

j'aimerai pouvoir lors d'un appuye sur bouton, faire une sorte de copier coller d'un fichier excel en php !

En gros : j'ai mon fichier FicheDeControle.xls dans un répertoire X et j'aimerais lors de l'appuye sur un bouton faire une copie de FicheDeContole.xls dans un répertoire Y !

Le but est d'avoir un fichier vierge du répertoire X et de pouvoir par la suite modifier le fichier du répertoire Y !

merci

Lien vers le commentaire
Partager sur d’autres sites

J'ai pas trop compris ta troixième phrase :transpi: mais tant qu'il s'agit de copier des fichiers depuis et vers des endroits visibles depuis ton script php (peut-être des problèmes de droits à régler notamment), tu peux utiliser la fonction copy

Oui merci, c'est ce que je fais mais ca fonctionne pas !

<?

$fichierSource="../en-cabling-test/FicheDeControle.xls";

$copie="../en-cabling-test/Excel/FicheDeControle.xls";

copy($fichierSource,$copie)

?>

Lien vers le commentaire
Partager sur d’autres sites

il te marque quoi comme erreur?

Il me marque ca :

PHP Warning: copy(../FicheDeControle.xls) [function.copy]: failed to open stream: No such file or directory in D:\WWWRoot\en-cabling-test\ajout\ajoutTravaux\ValideLd2.php on line 180

on dirais que ca remontre pas a la source de mon serveur pour aller chercher le fichier

Lien vers le commentaire
Partager sur d’autres sites

quand tu es en php, tu es limité par le document_root (la racine de www) ; pour des raisons de sécurité, tu ne peux pas remonter plus haut

si tu veux passer outre, fais-le à coup de system("ta commande"); (par exemple)

ou arrange-toi pour ne pas avoir à remonter plus haut que www (en repensant l'arbo, ou en rajoutant des liens symboliques)

Lien vers le commentaire
Partager sur d’autres sites

quand tu es en php, tu es limité par le document_root (la racine de www) ; pour des raisons de sécurité, tu ne peux pas remonter plus haut

si tu veux passer outre, fais-le à coup de system("ta commande"); (par exemple)

ou arrange-toi pour ne pas avoir à remonter plus haut que www (en repensant l'arbo, ou en rajoutant des liens symboliques)

Salut !

je remonte pas toutes l'arborescence !

Mon fichier .xls est a la source de mon serveur !

et ma fonction copy() est faite dans une page php qui elle est plus bas dans mon arborescence ( racineserveur/niveau1/niveau2/monfichier.php

Lien vers le commentaire
Partager sur d’autres sites

Voila ce que j'ai maintenant :

PHP Warning: system() [function.system]: Unable to fork [copy(http://en-cabling-test.web.pathos.fr/en-cabling-test/FicheDeControle.xls,http://en-cabling-test.web.pathos.fr/en-cabling-test/Excel/FicheDeControle.xls)] in D:\WWWRoot\en-cabling-test\ajout\ajoutTravaux\ValideLd2.php on line 180

(j'utilise le system("copy(...)");

Lien vers le commentaire
Partager sur d’autres sites

mouai, jsuis pas très habitué aux servs web sous windows... mais google insinue qu'il y a de fortes chances que ça vienne d'un manque d'autorisations pour lancer des commandes via system...

au plus simple: oublie ma remarque sur system(), on va creuser le copy()

d'autant plus si ton xls est dans un sous-répertoire de document_root

(et si par la suite tu veux quand même passer par système, ça pourra peut-être résoudre ton problème)

Lien vers le commentaire
Partager sur d’autres sites

Le problème d'autorisations me semble aussi être une piste importante à vérifier, (si le chemin donné dans le message d'erreur est le bon).

Ton script PHP est-il exécuté par apache ? IIS ? Dans quel mode (ISAPI / CGI / FASTCGI) ? Sais-tu sous quelle identité sont exécutés les scripts ?

Lien vers le commentaire
Partager sur d’autres sites

ok

Voila ce que me dit le manager du serveur :

Suppose we want to write to the file "myFile.log" in the writable folder "myFolder" of site "mySite".

How to retrieve the full path to that file so that it can be opened and written to ?

- PHP : use the WWWROOT environment variable to retrieve the root of all web sites, then append the path information.

$fullpath=getenv("WWWROOT") . "/mySite/myFolder/myFile.log";

Lien vers le commentaire
Partager sur d’autres sites

En fait ça risque aussi de te poser problème si tu n'arrive pas à ouvrir le fichier source pour le mettre dans la base :transpi:

Le processus grosso modo :

- Avoir une table avec une colonne BLOB ou similaire (éventuellement aussi BFILE mais je connais pas le fonctionnement)

- Ouvrir le fichier à insérer dans la base

- Lire son contenu, et y faire un petit addslashes pour échapper les inévitables caractères non visibles

- Insérer le résultat dans le blob avec une requête SQL classique, dans la colonne blob.

Lien vers le commentaire
Partager sur d’autres sites

Problème résolu pour la fonction copy().

Le serveur est configuré pour interdire toute modification de fichier ou de dossier depuis l'exterieur (en l'occurence depuis internet)

Il a fallu donner une autorisation spéciale (write access enable) aux dossier désiré pour pourvoir utiliser copy();

Voila !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...