У меня установлен Roundcube на Ubuntu 14.04 с использованием NGINX, со статическим IP, SpamAssassin, ClamAV. Отправка / получение электронной почты прошла нормально, включая загрузки, однако не могу ничего загрузить для отправки.

Конфигурация

файл php.ini

memory_limit = 256M
max_execution_time = 60
;open_basedir =
log_errors = On
post_max_size = 100M
file_uploads = On
upload_tmp_dir = /tmp
upload_max_filesize = 100M

Права доступа к папке

/tmp
srw-rw---- 1 nginx nginx

/roundcube/temp
drwxrwxrwx  2 nginx nginx   4096 Feb 20 00:41 temp

В nginx.conf в httpдирективе я установил

client_max_body_size 100m;

Журнал ошибок

-note: вывод ниже Я удалил имена доменов и каталогов.

FastCGI sent in stderr: "PHP message: PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0" while reading response header from upstream, client: X.X.X.X server: domain.com, request: "POST /mail/?_task=mail&_id=~~~from=compose&_action=upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/php5-fpm.sock:", host: "domain.com", referrer: "https://domain.com/mail/?_task=mail&_action=compose&_id:~~~~

Исправление проблем

Я установил для папки mail / temp значение 777, чтобы посмотреть, будет ли он записывать туда файл, и это произошло, но Roundcube по-прежнему выдавал ошибку «Ошибка загрузки файла». Обычно этот каталог /mail/tempустановлен на 755 и будет записывать файлы размером 0 КБ, в отличие от 777, файл фактически будет записан, но ошибка в roundcube остается неизменной в любом случае.

Я также поигрался с правами доступа к каталогу root (указывает PHP) / tmp, чтобы увидеть, что 777 поможет (все упомянутые файлы доступны через nginx: nginx) ... без радости, та же ошибка, выводимая Roundcube: «Ошибка загрузки файла». В крайнем случае я указал PHP на тот же / mail / temp, чтобы посмотреть, будет ли он писать, но все равно - та же ошибка roundcube «Ошибка загрузки файла».

Как я могу решить эту проблему с загрузкой?

answer

Была такая же проблема. В конце концов отследил это до пустого значения upload_tmp_dir в моей конфигурации php, поэтому попробуйте добавить что-то подобное в конфигурацию apache или отредактируйте свой php.ini:

php_admin_value upload_tmp_dir /var/tmp

Также добавлен filesystem_attachmentsв мой $config['plugins']массив

Перезапустите обе службы

$ sudo service php-fpm restart
$ sudo service nginx restart