“PHP Warning: move_uploaded_file“ là một lỗi máy chủ web điển hình với nginx và xuất hiện khi chúng ta muốn tải một tệp lên máy chủ. Thông thường, khi chúng tôi phải tải lên chứng chỉ hoặc các tệp khác không thuộc về “Media”, chúng tôi không thấy lỗi trong giao diện của adminĐăng ký CMS.
Ở một dạng cụ thể hơn, lỗi “PHP Warning: move_uploaded_file” chúng tôi tìm thấy nó trong error.log
như:
FastCGI sent in stderr: "PHP message: PHP Warning: move_uploaded_file(/srv/www/domain.test/public/file.file): failed to open stream: Permission denied in /srv/www/domain.test/public/script.php on line 748 PHP message: PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpqAVtWy'
Tại sao lỗi xảy ra “PHP Warning: move_uploaded_file“ và cách chúng tôi giải quyết nó
Như tôi đã nói ở trên, lỗi xảy ra khi chúng tôi cố gắng tải tệp lên máy chủ web.
"FastCGI sent in stderr
”Là điển hình cho các máy chủ có PHP-FPM và nginx như phần mềm web. Vì vậy, vấn đề nằm ở đâu đó trong mối quan hệ của tập lệnh mà thông qua đó các tệp được tải lên.
"move_uploaded_file(): Unable to move
”Cho chúng tôi biết rất rõ ràng rằng các tệp đó không thể được tải lên và di chuyển đến một thư mục khác trên máy chủ web bằng tập lệnh thực hiện thao tác.
Giải quyết lỗi này PHP nó được giải quyết rất đơn giản, đặt quyền chính xác trên máy chủ, cho cả tập lệnh thực thi, mà người dùng có khả năng xảy ra cao nhất: nginx không có quyền truy cập và cho thư mục đích.
Nếu các tệp trang web không thuộc về người dùng, như trên cPanel, VestaCP hoặc các nền tảng quản lý lưu trữ khác, thì gần như chắc chắn giải pháp là cấp cho người dùng nginx quyền truy cập vào thư mục tải lên và tập lệnh.
Đối với ví dụ mã trên, chúng tôi sẽ thực thi lệnh sau trong SSH:
chown -R nginx:nginx /srv/www/domain.test/public/
chmod g+w file.file
Chúng tôi tiếp tục tải lên và mọi thứ sẽ hoạt động mà không có lỗi “move_uploaded_file(): Unable to move“.
Nếu bạn vẫn gặp sự cố, nó có thể được giải quyết trong phần nhận xét của hướng dẫn này.