Всем привет.
При попытке загрузки файлов: rar, pdf, exe - PHP возвращает ошибку 7 UPLOAD_ERR_CANT_WRITE. При этом txt, ppt, gif и другие загружает нормально.
Проблема встречается на внутреннем сервере под Ubuntu 14.04 + apache2, php 5.6
У нормального хостера :) все работает великолепно.
Очевидно есть пробел в знаниях и конфигурации apache/php, но пока я не вижу решения проблемы. Коллеги, если есть понимания в какую сторону копать - прошу направить.
Спасибо.
Для примера, скрипт вообще элементарный:
index.php
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" class="form-control">
<button type="submit">Отправить</button>
</form>
upload.php
print_r($_FILES);
Судя по ошибке проблема в сохранении файлов. Проверьте директории в которые пытаетесь сохранить файлы.
UPLOAD_ERR_CANT_WRITE
Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.
Источник: http://php.net/manual/en/features.file-upload.errors.php
UPD. Проверьте всё таки доступна ли папка для записи is_writable.
Так же возможно что вы грузите слишком большие файлы и они не помещаются во временную папку /tmp или какая у вас заданна в php.ini.
Попробуйте в php.ini изменить upload_tmp_dir
на путь к папке где у вас точно есть много свободного места.
Дебажа ini_get() и sys_get_temp_dir () обнаружил две проблемы. Во первых по какой то причине в /tmp временно не помещались некоторые типы файлов: rar, pdf, exe... Починил изменив на /var/www/tmp
Во вторых, как не правил php.ini все равно оставалось: post_max_size 8M upload_max_filesize 2M
В общем и целом, мне не понятна логика, но смог переопределить настройки только для виртуального хоста /etc/apache2/sites-available/
php_admin_value upload_tmp_dir "/var/www/tmp"
php_admin_value upload_max_filesize 256M
php_admin_value post_max_size 256M
через php.ini, init_set(), .htaccess
то же самое сделать не удалось.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
в data передает nullПомогите понять почему