Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Błąd: Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp
Forum PHP.pl > Forum > Przedszkole
seslo
Witam
Nie wiem co mam zrobić, wyskakują mi 2 błędy:


Warning: move_uploaded_file(C:\Users\admin\Desktop/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/u407141732/public_html/czesci_komp.php on line 19

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpWjNM1Y' to 'C:\Users\admin\Desktop/' in /home/u407141732/public_html/czesci_komp.php on line 19

kod:

?<?php

$message = null;

$allowed_extensions = array('csv');

$upload_path = '\\BASTEK\Users\admin\Desktop';


if (!empty($_FILES['file'])) {

if ($_FILES['file']['error'] == 0) {

$file = explode(".", $_FILES['file']['name']);
$extension = array_pop($file);

if (in_array($extension, $allowed_extensions)) {

if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.'/'.$_FILES['file']['name'])) {

if (($handle = fopen($upload_path.'/'.$_FILES['file']['name'], "r")) !== false) {

......



proszę o pomoc!
Michael2318
Masz znacznik php to zacznij go używać.
seslo
Może mi ktoś to wytłumaczyć i powiedzieć jak to rozwiązać ?
Dziękuje.
Michael2318
A może wykażesz minimum inicjatywy i Ty ze swojej strony i wkleisz ten kod jak należy...?
seslo
To jest kod. Na serwerze lokalnym działa dobrze. Natomiast na zewnętrznym serwerze www nie działa.
I to są te dwa błędy:



Warning: move_uploaded_file(C:\Users\admin\Desktop/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/u407141732/public_html/czesci_komp.php on line 19

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpwPx6Mj' to 'C:\Users\admin\Desktop/' in /home/u407141732/public_html/czesci_komp.php on line 19


  1. <?php
  2.  
  3. $message = null;
  4.  
  5. $allowed_extensions = array('csv');
  6.  
  7. $upload_path = '\\BASTEK\Users\admin\Desktop';
  8.  
  9.  
  10. if (!empty($_FILES['file'])) {
  11.  
  12. if ($_FILES['file']['error'] == 0) {
  13.  
  14. $file = explode(".", $_FILES['file']['name']);
  15. $extension = array_pop($file);
  16.  
  17. if (in_array($extension, $allowed_extensions)) {
  18.  
  19. if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.'/'.$_FILES['file']['name'])) {
  20.  
  21. if (($handle = fopen($upload_path.'/'.$_FILES['file']['name'], "r")) !== false) {
  22.  
  23. $keys = array();
  24. $out = array();
  25.  
  26. $insert = array();
  27.  
  28. $line = 1;
  29.  
  30. while (($row = fgetcsv($handle, 0, ',', '"')) !== FALSE) {
  31.  
  32. foreach($row as $key => $value) {
  33. if ($line === 1) {
  34. $keys[$key] = $value;
  35. } else {
  36. $out[$line][$key] = $value;
  37.  
  38. }
  39. }
  40.  
  41. $line++;
  42.  
  43. }
  44.  
  45. fclose($handle);
  46.  
  47. if (!empty($keys) && !empty($out)) {
  48.  
  49. $db = new PDO('mysql:mysql.er.plt;dbname=u41732_s', 'u407141', 'Pojt1');
  50. $db->exec("SET CHARACTER SET utf8");
  51.  
  52. $sql = "DELETE FROM `sprzet`";
  53. $db->exec($sql);
  54.  
  55. $sql = "ALTER TABLE `sprzet` AUTO_INCREMENT = 0";
  56. $db->exec($sql);
  57.  
  58. foreach($out as $key => $value) {
  59.  
  60. $sql = "INSERT INTO `sprzet` (`";
  61. $sql .= implode("`, `", $keys);
  62. $sql .= "`) VALUES (";
  63. $sql .= implode(", ", array_fill(0, count($keys), "?"));
  64. $sql .= ")";
  65. $statement = $db->prepare($sql);
  66. $statement->execute($value);
  67.  
  68. }
  69.  
  70. $message = '<span class="green">Plik załadował się pomyślnie !</span>';
  71.  
  72. }
  73.  
  74. }
  75.  
  76. }
  77.  
  78. } else {
  79. $message = '<span class="red">Dozwolone tylko pliki .csv</span>';
  80. }
  81.  
  82. } else {
  83. $message = '<span class="red">Wystąpił problem z plikiem</span>';
  84. }
  85.  
  86. }
  87.  
  88. ?>
Michael2318
Jak na moje to taka ścieżka w ogóle nie istnieje:
  1. $upload_path = '\\BASTEK\Users\admin\Desktop';
seslo
powinno być coś takiego ?

  1. $upload_path = 'C:\Users\admin\Desktop';


?
matiit
A serwer stoi na windowsie czy Linuksie?
Raczej
  1. /home/user/public_html/domain/uploaded
jeśli to hosting dzielony na wielu userów.
Na dedyku czy VPS jeszcze inaczej będzie (ale podobnie).
seslo
Jest to linux serwer
matiit
Jeśli nie działasz na żadnym frameworku to:

powiedzmy że masz taką strukturę:

myapp/upload.php
upload/

Aby odwołać się z pliku upload.php do katalogu upload/ robisz tak:
Kod
../upload/


../ - oznacza "katalog wyżej".
../../ - dwa katalogi wyżej
./ - bieżący katalog.

Pamiętaj że w Linuksie używa się '/' a nie '\'
seslo
matiit zrobiłem tak jak napisałeś i wciąż mam te dwa błędy:


Warning: move_uploaded_file(C:\Users\admin\Desktop/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/u407141732/public_html/czesci_komp.php on line 19

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpdnjo7e' to 'C:\Users\admin\Desktop/' in /home/u407141732/public_html/czesci_komp.php on line 19

matiit
Przecież nadal masz ustawioną windowsową ścieżke z Twojego systemu..
seslo
kod jest na serwerze linuks. Natomiast plik pobieram ze swojego pulpitu na komputerze.
matiit
Ale jak coś uploadujesz to przecież najpierw plik jest kopiowany do /tmp ('/tmp/phpdnjo7e' w Twoim przypadku), a potem z /tmp kopiujesz go gdzieś do stałego katalogu na serwerze.

Nie wiem jak to wytłumaczyć, ale robisz to źle.

http://www.php.rk.edu.pl/w/p/wysylanie-pliku-na-serwer/ chyba tu jest to wyjaśnione.
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.