解决wordpress无法安装主题插件、不能上传图片、不能自动更新等问题

大家好,本人最近配置wordpress主题等,遇到一连串奇怪的问题,特此一一记录下来,希望大家能从中得到帮助,喜欢留个小赞 ~


目录

  • 问题分类
  • 问题分析与解决
    • Nginx出现413 Request Entity Too Large错误
    • PHP配置文件php.ini的放在哪个位置
    • 不能上传图片 不能自动安装主题、插件(需要FTP账户) 不能自动更新 其它任何需要wordpress写文件的问题
    • 无法安装这个包PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature
    • The package could not be installed. The theme is missing the style.css stylesheet.
  • 总结~问题再难还是办法多!加油!


问题分类

  1. Nginx出现413 Request Entity Too Large错误
  2. PHP配置文件php.ini的放在哪个位置
  3. 不能上传图片 不能自动安装主题、插件(需要FTP账户) 不能自动更新 其它任何需要wordpress写文件的问题
  4. 无法安装这个包PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature
  5. The package could not be installed. The theme is missing the style.css stylesheet.

问题分析与解决


Nginx出现413 Request Entity Too Large错误

Nginx出现这个错误一般在上传文件的时候出现,意思也很好理解,就是请求实体太大——通俗的可以理解成上传文件太大,这就需要修改nginx配置文件了,打开可看到nginx默认上传文件的大小是1M。

打开nginx主配置文件nginx.conf,找到http{}段,修改或者添加如下内容:
若找不到nginx.conf文件,可使用find / -name nginx.conf 或者locate nginx.conf等命令查找。

client_max_body_size 20m;

然后重启nginx:

sudo /etc/init.d/nginxd reload

要是以php运行的话,这个大小client_max_body_size要和php.ini中的如下值的最大值差不多或者稍大,这样就不会因为提交数据大小不一致出现错误。内容如下:

post_max_size = 20M
upload_max_filesize = 20M

PHP配置文件php.ini的放在哪个位置

第二个问题是接着上一问题的补充,有些人难以找到php.ini的位置
可以使用以下方法:

第一步:找到php命令在在哪里

whereis php

第二步:执行通过php命令得到php.ini的位置

php --ini

不能上传图片 不能自动安装主题、插件(需要FTP账户) 不能自动更新 其它任何需要wordpress写文件的问题

这个问题就是本博客的重点解决对象了,迷茫其中好久,查阅了大量方法,综合实践得知,目前直接对文件夹chmod 777这个方法不是太管用。

慢慢分析问题才得出这个结论:nginx的用户及其用户组不对,我的默认都使用了root。

  • 若wordpress用户组为root,这样就不能创建目录了,具体原因大家可以查阅linux相关知识。解决wordpress无法安装主题插件、不能上传图片、不能自动更新等问题_第1张图片
    大家看上图,需要把wordpress的根目录(我的根目录是…/html)都设置为非root用户及其用户组,正如蓝色框框内的,红色框内是我新建的也就是会失败的情况。

我新建了一个nginx用户及用户组,如下操作

  1. 添加 nginx 用户
    useradd nginx -s /sbin/nologin -M
  2. 更改 Nginx 配置文件
    vim vim /etc/nginx/nginx.conf
user  nginx nginx;        # 关键就是修改这句,默认用户及其用户组
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
    client_max_body_size 20m;
}
  1. 配置php-fpm
    查找www.conf; find /* -name www.conf

[root@iZwz9etszs074zpi9x294jZ html]# vim /etc/php-fpm.d/www.conf
关键就是改 user = nginxgroup = nginx
nginx就是上面我们申请的用户及其用户组

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000

; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
;listen.owner = nobody
;listen.group = nobody
  1. 重新加载 Nginx和php-fpm
    systemctl restart nginx
    systemctl restart php-fpm
  2. 验证是否生效
ps aux | grep nginx 

[root@localhost ~]# ps aux | grep nginx
root 8901 0.0 0.1 45036 1784 ? Ss 13:54 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 8909 0.0 0.1 45460 1828 ? S 13:59 0:00 nginx: worker process # Nginx进程的所属用户为nginx

最后不出意外应该能成功

无法安装这个包PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature

这个问题比较好解决,当我解决了上面问题的时候,兴高采烈地上传rar压缩文件以为能成功,问题又不约而至,绝望3.0
原来主题上传仅支持zip压缩格式

The package could not be installed. The theme is missing the style.css stylesheet.

这个问题,就是上传的主目录里面没有css样式文件,不能把买的主题zip压缩包直接上传,需要挑选出真正的主题部分才行。
比如解决wordpress无法安装主题插件、不能上传图片、不能自动更新等问题_第2张图片
这是我的主题,本来我是直接把三个文件都打包zip,上传就报错了,里面没有css文件吧,原来dux文件夹才是我们主题的主要部分,需要将其打包成zip上传。解决wordpress无法安装主题插件、不能上传图片、不能自动更新等问题_第3张图片
对于最后这个问题也推荐这个文章

总结~问题再难还是办法多!加油!

你可能感兴趣的:(云服务器,wordpress,nginx,linux,php)