什么原因导致 wordpress 上传时出现文件空错误?

什么原因导致 wordpress 上传时出现文件空错误?

我似乎无法弄清楚为什么当我尝试在 wordpress 中上传任何内容时会出现以下情况......对于媒体上传和 wordpress 导入 xml:

“抱歉,出现错误。文件为空。请上传更重要的内容。此错误也可能是由于您的 php.ini 中禁用了上传功能,或者 php.ini 中定义的 post_max_size 小于 upload_max_filesize 所致。”

似乎很少有关于如何通过 nginx/php-fpm 在线解决此问题的信息……其中大部分是关于 php.ini 最大配置或 chmod,这……在我的设置中足够post_max_size大,并且(以及超时)……并且 chmod/chown 似乎适用于使用单独的 php 池。也许有人可以理解这一点?upload_max_filesize/etc/php5/fpm/php.ini

这是我的设置:

  • Cloudflare(已关闭)转为浮动 IP
  • Digitalocean 浮动 IP 到 droplet
  • Droplet 是 Ubuntu 14.04,带有 nginx,使用 php-fpm,并为每个 wordpress ms 安装创建池(目前为 x4)
  • 每个 wpms 安装均使用 Let's encrypt 的 SSL
  • 对站点根目录中的所有 wpms 目录进行 Chmod 755
  • 对每个站点根目录中的所有 wpms 文件进行 Chmod 644
  • wp-config.php 的 Chmod 660
  • 将每个 php5-fpm 池用户在其自己的站点根目录下的所有文件/目录上进行 chown,例如:chown -R example1:example1 /home/example1/*
  • Wordpress 是其 nginx conf 根目录下的一个目录。例如/home/example1/app/wordpress_files_here
  • php.ini 已启用上传功能并定义目录(/home/tmp/)

用户既不在 www-data 组也不在 sudo 组中,我知道这样做存在安全风险,但即便如此,我还是暂时尝试将他们添加到 www-data 组,看看 wordpress 上传是否有效……没有成功。我也尝试过 chown example1:www-data 所有权,但没有成功。我还尝试过对上传文件夹使用 chmod 777,但没有成功。

错误日志有以下内容:在 wpms-error.log 中(这对我来说也没有意义)

2016/05/20 01:12:00 [crit] 1584#0: *1251 open() "/home/example1/example1.com-access.log" failed (13: Permission denied) while logging request, client: [my IP address], server: example1.com, request: "POST /wp-admin/admin-ajax.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm-example1.sock", host: "example1.com", referrer: "https://example1.com/wp-admin/admin.php?import=wordpress&step=1&_wpnonce=dad4d82487"

在这些站点的 nginx conf 文件中我有: access_log /home/example1/$host-access.log;

访问日志在 nginx.conf 中启用(尽管不推荐),但每个站点的访问日志不会写入其站点根目录。

所以...在尝试了在线阅读的所有内容后...我还没有发现根本问题是什么...因为文件权限本身似乎不是问题?..是吗???

以下(将用户名更改为 example1 等之后)是ps aux | grep php结果:

root       993  0.0  0.2 266688 11396 ?        Ss   May18   0:10 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
example1  1003  0.0  1.1 302568 45856 ?        S    May18   0:32 php-fpm: pool example1              
example1  1004  0.0  1.1 304620 47808 ?        S    May18   0:31 php-fpm: pool example1             
example2     1005  0.0  1.1 304360 47648 ?        S    May18   0:30 php-fpm: pool example2                   
example2     1007  0.0  1.1 302308 45956 ?        S    May18   0:30 php-fpm: pool example2                  
example3  1008  0.0  0.1 268640  7704 ?        S    May18   0:00 php-fpm: pool example3               
example3  1009  0.0  0.1 268640  7744 ?        S    May18   0:00 php-fpm: pool example3               
www-data  1010  0.0  0.1 266680  7560 ?        S    May18   0:00 php-fpm: pool www                     
www-data  1011  0.0  0.1 266680  7564 ?        S    May18   0:00 php-fpm: pool www                     
example4      1013  0.0  0.9 296016 39704 ?        S    May18   1:24 php-fpm: pool example4                   
example4      1014  0.0  1.3 310952 55024 ?        S    May18   1:23 php-fpm: pool example4                   
example5     1015  0.0  1.0 297352 40940 ?        S    May18   0:32 php-fpm: pool example5                  
example5     1016  0.0  1.1 305104 48232 ?        R    May18   0:32 php-fpm: pool example5                  
example4      1105  0.0  0.9 296016 39596 ?        S    May18   1:20 php-fpm: pool example4                    
example1  1313  0.0  0.9 296284 39884 ?        S    May18   0:31 php-fpm: pool example1              
example2     1317  0.0  1.1 304364 47628 ?        S    May18   0:29 php-fpm: pool example2                   
example5     1332  0.0  0.9 296880 39056 ?        S    May18   0:29 php-fpm: pool example5                   
example3  3727  0.0  0.0  11744   932 pts/1    S+   18:42   0:00 grep --color=auto php

上面的 example3 不是 wpms 站点,它只是一个空的 root atm,并且该用户也属于 sudo 组,并拥有自己的 ssh 登录。我不知道这是否相关。

答案1

在我看来,这听起来像是权限问题,可能与群组有关。我详细介绍了本教程,但要点如下

首先我用来重置权限的脚本

chown -R tim:www-data *
find /var/www/wordpress -type d -exec chmod 755 {} \;
find /var/www/wordpress -type f -exec chmod 644 {} \;
find /var/www/wordpress/wp-content/uploads -type f -exec chmod 664 {} \;
find /var/www/wordpress/wp-content/plugins -type f -exec chmod 664 {} \;
find /var/www/wordpress/wp-content/themes -type f -exec chmod 644 {} \;
chmod 440 /var/www/wordpress/wp-config.php
chmod -R g+s /var/www/wordpress/

以下是我的教程中的要点 - 这些信息来自 wordpress.org 网站,大部分信息都在我的教程中进行了引用

  • 将所有者设置为您之前创建的用户,并将所有权组设置为 www-data
  • 文件夹默认值为 755,标准
  • 文件默认为所有者可写,所有人可读
  • 上传文件夹可由用户和 Web 服务器写入,因此用户可以上传媒体
  • 插件文件夹可由用户和 Web 服务器写入,因此可以添加插件
  • 主题文件夹仅可由所有者修改

相关内容