Как исправить ошибку 0, возникающую при использовании функции move_uploaded_file?

  • 18 августа 2023 г. 7:16
Ответы на вопрос 3
Ошибка 0, возникающая при использовании функции move_uploaded_file, обычно связана с проблемами в конфигурации сервера или ограничениями на размер загружаемых файлов. 

Для исправления данной ошибки, можно попробовать следующие действия:

1. Проверьте, что на сервере включена возможность загрузки файлов. Это можно сделать, отредактировав файл php.ini и установив следующие значения параметров:

   - upload_max_filesize - максимальный размер загружаемого файла (например, 10M для 10 МБ)
   - post_max_size - максимальный размер POST-данных (не должен быть меньше, чем upload_max_filesize)

2. Убедитесь, что папка, в которую вы пытаетесь загрузить файл, имеет права на запись для пользователя, под которым запущен веб-сервер. Права 777, хотя позволяют записывать файлы в папку, не являются рекомендуемыми из соображений безопасности. Рекомендуется установить права 755 для папки и 644 для файлов.

3. Проверьте, что размер загружаемого файла не превышает максимально допустимый размер. Вы можете использовать параметр MAX_FILE_SIZE в форме для ограничения размера загружаемого файла, а также проверить значения параметров upload_max_filesize и post_max_size в php.ini.

4. Убедитесь, что путь, указанный в переменной $destination, указывает на правильную папку. Вы можете использовать абсолютный путь к папке для этого.

Например:
```php
$path = $_SERVER['DOCUMENT_ROOT'] . '/uploads/';
$destination = '';
```

0 - Некорректная формулировка. Это не ошибка, а предупреждение, которое генерируется функцией. Чтобы увидеть это предупреждение на экране, нужно включить вывод ошибок PHP на экран (display_errors). Если вам не разрешено выводить ошибки на экран, вы можете найти их в лог-файле. Чтобы узнать, как исправить эту ошибку, нужно прочитать сообщение об ошибке.

move_uploaded_file() возвращает либо true, либо false, она не возвращает ноль. Если вы ищете предупреждения в логе, там будет указана причина ошибки.

Бессмысленно использовать переменную $error = "Not uploaded because of error #".$_FILES["file-135"]["error"], потому что значение $_FILES["file-135"]["error"] относится только к передаче файла с клиента на сервер и не зависит от функции move_uploaded_file(). Если файл был успешно загружен, но не может быть перемещен по какой-то причине, move_uploaded_file() вернет false и выдаст предупреждение. Чтобы увидеть предупреждения, вам нужно включить их вывод с помощью следующих строк:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
0 - Эта "ошибка" на самом деле не является ошибкой, а просто предупреждение. Эта функция генерирует предупреждение, если не может выполнить свою работу. Чтобы увидеть это предупреждение на экране, включите вывод ошибок PHP на экран с помощью настройки display_errors. Если предупреждения не могут быть выведены на экран, вы можете проверить их в логе ошибок. Чтобы узнать, что делать с этим предупреждением, прочитайте сообщение об ошибке.

move_uploaded_file возвращает значение true или false, а не ноль. Если у вас есть варнинги в логах, они могут содержать полезную информацию о проблеме.

$error = "Not uploaded because of error #" . $_FILES["file-135"]["error"]; Этот код бессмысленен, потому что значение $_FILES["file-135"]["error"] указывает на результат передачи файлов с клиента на сервер и не зависит от move_uploaded_file. Если файл был успешно загружен, но не может быть перемещен по какой-либо причине, никаких действий не предпринимается и функция move_uploaded_file() возвращает false, а также выводится предупреждение. Чтобы увидеть предупреждения, вы можете включить их отображение с помощью следующих настроек:

ini_set('error_reporting', E_ALL);

ini_set('display_errors', 1);
Похожие вопросы