Jump to content

[RESOLU]Copier un fichier en php

Featured Replies

Posted

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

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

  • Author
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)

?>

  • Author
essaie avec les adresses de fichiers complets :transpi:

Justement j'essai mais bon !!

mon fichier source est sur mon serveur : \\en-cabling-test.web.pathos.fr\en-cabling-test\Excel

  • Author
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

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)

  • Author
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

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)

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 ?

  • Author

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";

  • Author

Bon,

Toujours le meme probleme !

J'envisage une autre solution !

Pensez vous qu'il est possible d'enregistrer un fichier .xls dans une base oracle ?

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.

  • Author

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 !

Archived

This topic is now archived and is closed to further replies.