Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z uploadowaniem
Forum PHP.pl > Forum > PHP
marcin1986
Witam,

Posiadam hosting na strefa.pl. Napisałem ostatnio prosty skrypt do uploadowania zdjęć na serwer. Ogólnie skrypt na serwerze lokalnym Apache + PHP 5 działał poprawnie. W momencie opublikowania skryptu mam problemy.

Poniżej zamieszczę kod pliku:

<?php
//uploaduje pliki na serwer

echo "NAZWA BAZOWA: ".$_FILES['plik']['tmp_name']."<br/>";
if(is_uploaded_file($_FILES['plik']['tmp_name'])) {

$arr = pathinfo($_FILES['plik']['name']);
echo "EXTENSION: ".$arr["extension"]."<br/>";
if($arr["extension"]=="gif" || $arr["extension"]=="jpg" || $arr["extension"]=="png" || $arr["extension"]=="jpeg") {
$roz = $arr["extension"];
do {
$nazwa_zdjecia = mt_rand(150,200000);
$wynik = mysql_query("SELECT nazwa_zdjecia FROM tabela WHERE nazwa_zdjecia = ".$nazwa_zdjecia."");
$znalezionych = mysql_num_rows($wynik);
} while($znalezionych != 0);


$uploaded = "/zdjecia/".$nazwa_zdjecia.".".$roz;

if (move_upload_file($_FILES['plik']['tmp_name'],$uploaded)) {
echo "File is valid, and was successfully uploaded.\n";


} else {
echo "Possible file upload attack!\n";
print_r($_FILES);
}

} else {
echo "&nbsp;&nbsp; <b>".LN_KOM3."</b>";
}

} else {
echo "&nbsp;&nbsp; <b>".LN_KOM4."</b>";
}
?>

Moje problemy są następujące. Po uploadowaniu zdjęcia plik nie jest przenoszony do katalogu docelowego chociaż chmod jest ustawiony 777. Problem pojawia się w miejscu funkcji: move_upload_file(). Nie mam pojęcia co może być przyczyną, że ta funkcja zwraca FALSE... I ostatecznie plik jest nie kopiowany.
Hubson
Nie move_upload_file(), a move_uploaded_file().
marcin1986
Hmm błąd z nazwą funkcji był spowodowany moim nie dopatrzeniem już po odkryciu błędu uploadowania i próby jego rozwiązania. ;/ Moje niedopatrzenie ponieważ próbowałem wykorzystać inną funkcję.

Ale po poprawieniu funkcji na move_uploaded_file() nadal mam problemy. Funkcja ta nadal zwraca FALSE. Nie wiem co jest grane... Dzisiaj postaram się przetestować skrypt na innym koncie.
kliperjk
a masz dodane w <form> "enctype="multipart/form-data"" ?
marcin1986
Dzisiaj przetestowałem skrypt z manuala ze strony PHP.net!

Plik 1

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="upl.php" method="POST">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>

Plik 2

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/zdjecia/upload/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

I problem pojawił się ponownie to znaczy funkcja move_uploaded_file() zwróciła false. Czyli zostaje coś z ustawieniami konta... W tablicy $_FILES w polu Error jest 0. Więc chyba z plikiem wszystko jest poprawnie. Nie mam najmniejszego pojęcia. W zasadzie podbny kod działał na innym serwerze bez problemów.
phpion
Możliwe są dwie kwestie:
1. Ścieżka jest niepoprawna. Za pewnie nie masz adresu /zdjecia/upload tylko coś w stylu /home/konto/www/zdjecia/upload i taką ścieżkę powinieneś określić (jaka konkretnie - musisz sam sprawdzić)
2. Ustawiłeś uprawnienia dla katalogu /zdjecia/upload (zakładając, że ścieżka jest poprawna)?
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.