Skip to main content
 首页 » 编程设计

wordpress之允许 WordPress 对 Docker 安装的文件夹进行写访问

2024年08月28日15qlqwjy

我有一个 Docker 设置,可以很好地与 Ubuntu、Nginx、PHP-FPM 和 MySQL 配合使用。

WordPress 可以写入上传文件夹,我可以在线编辑模板,但是当我尝试升级 WordPress 或插件时,它失败了:

Unpacking the update…

Could not create directory.: wordpress

Installation Failed

我有 chmod 777 整个 WordPress 文件夹,所以我不确定这是否与 Docker 或 WordPress 相关。我还检查了各种日志,但我发现的唯一相关行是:

192.168.59.3 - - [01/Oct/2014:14:16:58 +0000] "POST /wp-admin/update-core.php?action=do-core-upgrade HTTP/1.1" 200 5576 "/wp-admin/update-core.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"

以下是我创建 Docker 环境的方式:

brew install docker boot2docker 
boot2docker init 
# Allow VM access to our space 
curl http://static.dockerfiles.io/boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso > ~/.boot2docker/boot2docker.iso 
VBoxManage sharedfolder add boot2docker-vm -name home -hostpath /Users 
boot2docker up 

这是我启动容器的方式:

docker run -p 80:80 --name wp -d -v ~/wordpress:/mnt/www:rw wp 

这是 Nginx 配置:

server { 
 
    listen   80; ## listen for ipv4; this line is default and implied 
    listen   [::]:80 default ipv6only=on; ## listen for ipv6 
 
    root /mnt/www; 
    index index.php index.html index.htm; 
 
    # Make site accessible from http://localhost/ 
    server_name localhost; 
 
    location / { 
        # First attempt to serve request as file, then 
        # as directory, then fall back to index.html 
        try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 
 
    #error_page 404 /404.html; 
 
    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
        root /usr/share/nginx/www; 
    } 
 
    # pass the PHP scripts to FastCGI server 
    # 
    location ~ \.php$ { 
    try_files $uri =404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 
 
        fastcgi_pass unix:/var/run/php5-fpm.sock; 
        fastcgi_index index.php; 
        include fastcgi_params; 
    } 
 
} 

请您参考如下方法:

似乎需要一些 hack 才能以 root 以外的其他用户身份写入挂载的卷。参见 https://github.com/boot2docker/boot2docker/issues/581