Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kopiowanie plików na serwer
Forum PHP.pl > Forum > PHP
espeen
Witam.
Mam taki problem otórz gdy napisze pliczek który kopiuje pliki na serwer to na krasnalu mi to działa jednak gdy wrzuce to na stronkę to niestety wtedy pojawia się błąd "no such file...".
Czy ktoś wie czemu tak się dzieje?
Dla złośliwych dodam od razu że mam na serwerze katalog z prawami 777 do którego chce kopiować tongue.gif

Jeżeli ktoś wie co się dzieje to piszcie!
AxZx
jeszcze plik w ktorym jest skrypt wykonujacych te dzialania musi miec chmod 777.
revyag
A ustawiłeś poprawną ściezke do katalogu gdzie kopiujesz. Przydałby się też dokładniejszy opis błędu.
mike
Cytat(AxZx @ 2006-02-08 08:14:04)
jeszcze plik w ktorym jest skrypt wykonujacych te dzialania musi miec chmod 777.

Kto Ci tak nakłamał?
Nie musi tak być.

~espeen:
1. Proszę nadawać poprawne tematy! To co teraz masz w opisie tematu, powinno nim być. Za "Mały problem!" następny razem możesz dostać ostrzeżenie. Proszę poprawić.
2. Na 90% błąd działania jest spowodowany złą ścieżką, o czym już ~revyag napisał.
espeen
Ok więc oto dokładniejszy opis.
W pliku dodawanie_produktu.php mam cos takiego:
  1. <form action = index.php method = get ENCTYPE='multipart/form-data'>
  2. <input type=hidden name=MAX_FILE_SIZE value=50000>
  3. .
  4. .
  5. .
  6. Lokalizacja:<input type=file name=plik size=25>
  7. <input type = submit value=Dodaj name=send_d>


a w pliku index.php mam includa pliku akcja.php który obsluguje ten formularz:
  1. <?php
  2. if (isset($_GET['plik']) && $_GET['plik'] != '')
  3.  {
  4.  if (copy("$plik", "zdjecia/$id.jpg"))
  5.  {
  6.  echo "plik został dodany";
  7.  
  8.  }
  9.  else
  10.  {
  11.  print 'Nie można było dodać pliku.';
  12.  }
  13.  }
  14. ?>

I gdy sobie próbuje dodać pojawia się błąd:
Kod
Warning: copy(zdjecie1.jpg): failed to open stream: No such file or directory in /home/dealer/main/pkg/swift/creative/html/akcja.php on line 188


Używaj odpowiedniego bbcode. Poprawiam
revyag


Przy czym linia 188 to jest wlasnie ta
  1. <?php
  2. if (copy("$plik", "zdjecia/$id.jpg"))
  3. ?>
revyag
Musisz podać absolutną ścieżkę do katalogu gdzie kopiujesz.
  1. <?php
  2. copy("$plik", "/sciezka/do/katalgou/zdjecia/$id.jpg")
  3. ?>
espeen
Tylko że scieżka absotulna to jak dobrze rozumie w moim przypadku to właśnie jest ta którą podaje czyli zdjęcia/$id.jpg.

Tzn jak wchodze ftp na moje konto to mam tylko dwa katalogi do wyboru html i jakis drugi. W katalgu html umieszczam wszystkie pliki i nie ma żadnej dłużeszej scieżki.
Bo chyba nie musze dawać /html/zdjecia/$id.jpg bo przeciez i index.php i akcja.php jest w katalogu html.

Jak ktoś się zna na tym to prosze jeszcze o wypowiedz to ważne a ja już nie mam pomysłu jak wgrać ten plik sad.gif
mike
No przecież Ci już powiedziano.
Masz podać absolutną ścieżkę na serwerze.
/home/dealer/main/pkg/swift/creative/html/zdjecia/$id.jpg

I nie stosuj do takich rzeczy copy() tylko move_uploaded_file()
espeen
Ok fajnie przetestuje i dam znać dzięki za pomoc.
A czemu mam nie stosować copy?
nospor
Cytat
A czemu mam nie stosować copy?
Bo copy() jak sama nazwa wskzauje, kopiuje plik, czyli pozostawia orginal na starym miejscu. A po co smieci mają się walać tam gdzie nie potrzeba? move_uploaded_file() przenosi. Dodatkwo:
Cytat
Funkcja ta sprawdza czy na pewno plik określony przez nazwa_pliku jest prawidło uploadowanym plikiem (to znaczy, że został uploadowany przez PHPowy mechanizm uploadowania HTTP POST). Jeśli plik jest prawidłowy, to zostanie przeniesiony do nazwy pliku wskazanej przez przeznaczenie .
To wszystko masz w manualu, no ale poco zaglądac...
http://pl.php.net/manual/pl/function.move-uploaded-file.php
espeen
Cytat(nospor @ 2006-02-08 10:26:26)
Bo copy() jak sama nazwa wskzauje, kopiuje plik, czyli pozostawia orginal na starym miejscu. A po co smieci mają się walać tam gdzie nie potrzeba? move_uploaded_file() przenosi. Dodatkwo:

Właśnie o to mi chodzi aby dodać zdjęcie na serwer ale kopia ma zostać u mnie na komp!

Chciałęm wszystkim powiedzieć że podanie bezwzględnej ścieżki nie daje zupełnie nic!
Dalej ten sam błąd ale będę dalej próbował coś z tym zrobić i jak mi sie uda napisze o co to chodziło.
Jednak gdyby ktoś miał jeszcze inny pomysł co to może być to bardzo prosze pisać .
Dodam że jak testuje to u siebie na komp to działa dopiero po umieszczeniu strony na serwerze pojawiają się te problemy!
nospor
Cytat
Właśnie o to mi chodzi aby dodać zdjęcie na serwer ale kopia ma zostać u mnie na komp!
Ale php dziala po stronie serwera i z Twojego kompa to on ci nic nie bedzie wyrzucal. Plik przy uploaddzie jest wrzucany na serwer do katalogu tymczasowego, a ty go stamtąd masz zabrac i wrzucic tam gdzie chcesz winksmiley.jpg
espeen
Rozwiązanie problemu to...w formularzu nie można dawac get tylko koniecznie POSTexclamation.gif!

Temat skończony!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.