Hej! 
Wybaczcie, że tak skąpo opisane - jestem w trakcie przerwy w pracy, a problem nie daje mi spokoju i wierci mi dziurę w głowie. 

Jestem w trakcie tworzenia małego skryptu / cms'a w celach dydaktycznych i próbuje utworzyć sobie klasę do uploadu plików (tak wiem, że są gotowe biblioteki). 
Po sprawdzeniu tymczasowych warunków etc dochodzimy do tego punktu: 

if(copy($fileNameTmp$path))
                    {
                        return 
$path;
                    } else {
                        return 
false;
                    } 

W ten sposób wszystko ładnie działa. Natomiast gdy zamiast copy() użyje move_uploaded_file() plik także pojawia się w odpowiednim folderze z odpowiednio zmienioną nazwą, jedyna różnica to, że zwraca false zamiast $path. Skoro zwraca false to zakładałbym, że instrukcja się nie wykonała... z tym, że jak wspomniałem - wykonała się perfekcyjnie. 

Z dokumentacji: 

Cytat:Returns TRUE on success.

If filename is not a valid upload file, then no action will occur, and move_uploaded_file() will return FALSE.

If filename is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return FALSE. Additionally, a warning will be issued.

Oba przypadki mi tu nie pasują do mojej sytuacji.

Zmienna $fileNameTmp to po prostu  $_FILES['img']['tmp_name'], natomiast path = to ścieżka do folderu z nową nazwą pliku, coś w ten deseń:
$temp explode("."$_FILES['img']['name']);
                    
$newfilename round(microtime(true)) . '.' end($temp);
                    
$path 'upload/' $newfilename;
                    
                    if(
copy($fileNameTmp$path))
                    {
                        return 
$path;
                    } else {
                        return 
false;
                    } 

Jedyne co mi przychodzi do głowy, to że zmiana nazwy powoduje ten błąd, ale dlaczego mimo to funkcja działa - nie mam pojęcia. 
Próbowałem googlować, konkretnych rozwiązań brak, a te które są nie pomagają.
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?