Bạn bật log php xem sao? Hoặc vào log của apache trong thư mục /var/log/apache/error.log.
Thực ra thì lệnh copy và move_uploaded_file đều ok.
Một số lỗi mình suy đoán có thể:
- thư mục upload/ chưa được chmod để user www-data có thể ghi vào được. Bạn dùng lệnh ls -l xem thư mục đang được đặt quyền thế nào và thuộc quyền sở hữu người dùng nào.
- trước khi được move thì file này được đặt trong thư mục tạm (do php config, mặc định là /tmp). Nhưng rất có thể php đã được config dùng thư mục tạm khác. Bạn cũng kiểm tra quyền của thư mục này xem.
Bạn đang code trên MAC ah? thưc mục /Application/XAMPP/xamppfiles/htdocs/ mặc định quyền của admin thôi. Bạn phải nhét user www-data vào group admin, hoặc chmod nó thành 777 (tốt nhất là 775).
Ngoài ra, khi code bạn nên bật error của php lên. Có thể set trong php.ini hoặc đặt vào ini_set(“display_errors”,1). Nhìn vào cái error cũng sẽ suy đoán được phần nào lỗi, chứ tắt ngóm đi thì … chịu, lỗi đến từ nhiều lý do lắm.
Hơn nữa, sau này khi đặt câu hỏi bạn paste cái error log cũng sẽ giúp mọi người sửa cho bạn dễ hơn.