Roundcube,上传失败

Roundcube,上传失败

我在 Ubuntu 14.04 上安装了 Roundcube,使用 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;

错误日志

-注意:下面的输出我删除了域和目录名称。

FastCGI 在 stderr 中发送:“PHP 消息:PHP 警告:文件上传错误 - 无法在第 0 行的未知位置创建临时文件”同时从上游读取响应标头,客户端:XXXX 服务器:domain.com,请求:“POST /mail/?_task=mail&_id=~~~from=compose&_action=upload HTTP/1.1”,上游:“fastcgi://unix:/tmp/php5-fpm.sock:”,主机:“domain.com”,引用者:“https://domain.com/mail/?_task=mail&_action=compose&_id:~~~~

故障排除

我已将 mail/temp 文件夹设置为 777,只是为了看看它是否会在那里写入文件,结果确实如此,但 Roundcube 仍然给出错误“文件上传失败”。通常,该目录/mail/temp设置为 755,将写入 0kb 文件,而 777 则实际上会写入文件,但无论哪种方式,roundcube 中的错误仍然相同。

我还尝试了根目录(PHP 指向的)/tmp 目录权限,看看 777 是否有用(所有提到的文件都可以由 nginx:nginx 访问)...没有成功,Roundcube 输出相同的错误:“文件上传失败”。作为最后的手段,我将 PHP 指向相同的 /mail/temp 以查看它是否会写入,它确实写入了,但仍然出现相同的 roundcube 错误“文件上传失败”。

我该如何解决这个上传问题?

答案1

刚刚遇到了同样的问题。最终将其归结为我的 php 配置中 upload_tmp_dir 值为空,因此请尝试将类似以下内容添加到您的 apache 配置中,或者编辑您的 php.ini:

php_admin_value upload_tmp_dir /var/tmp

也添加filesystem_attachments到我的$config['plugins']阵列中

答案2

重启两个服务

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

相关内容