WP-CLI 安装 plugins/themes 时出错。 "Could not create directory"。权限错误? Ubuntu 14.04 x64
WP-CLI error installing plugins/themes. "Could not create directory". Permissions error? Ubuntu 14.04 x64
我已经搜索了几天,试图找到解决这个问题的方法,但我已经放弃了,是时候寻求帮助了。
我 运行 Wordpress 在 Ubuntu 14.04 x64 上,使用由 PuPHPet 创建的 Vagrant 服务器(一个自动 GUI,用于使用 Vagrant、Puppet 和 Hiera 创建框那些不知道的人)。我使用 Mark Jaquith 的 WP-Skeleton Wordpress 文件夹设置,并设置了两个共享文件夹; /var/www/wp(sitename/www/wp 在主机上)用于 Wordpress 核心文件,/var/www/content/(sitename/www/content 在主机上)用于自定义内容目录,这是 WP-Skeleton 的目的.
当 SSH 连接到 VM 和 运行 WP-CLI 时,只要 WP-CLI 知道我的内容目录和 Wordpress 核心文件的路径,一切似乎都能正常工作。问题出在尝试安装插件或主题时,如下图-
[07:20 PM]-[vagrant@packer-virtualbox-iso-1422601639]-[/var/www]-[git master]
$ wp plugin install jetpack
Installing Jetpack by WordPress.com (3.3.2)
Downloading install package from https://downloads.wordpress.org/plugin/jetpack.3.3.2.zip...
Unpacking the package...
Warning: Could not create directory.
我的第一个也是到目前为止唯一的想法是这是一个权限错误,但由于我对这方面的了解有限,我只能做这么多,但是,我可以说我已经尝试使用 chmod -v 755 /var/www/content/.
将内容目录的权限更改为 755,然后是 765,甚至是 777
即使权限设置为 777,这也没有用。那么还有什么问题呢?我知道这可能与 www-data 的权限有关,但正如我所说,我对查找或更改的内容知之甚少。我确定这很简单,而且我确定这与 WP-CLI 没有直接关系,因为我有一种感觉,如果我使用任何其他网络应用程序尝试安装到我拥有的 www 文件夹同样的问题。
如果有人需要我的任何信息,我会把它包括在内,比如我的 congif.yaml 文件(当使用 Hiera 和 Puppet 时,它存储了通常会在 Vagranfile 中的所有信息,并自动执行安装 Puppet 模块)。它还包括有关 Ubuntu 框、文件夹设置等的信息。
提前致谢,
P.J.
更新:
我想补充一点,当我使用 WP-CLI 时,添加 sudo wp plugin install jetpack --allow-root
会起作用,但是,如果我是 root 用户,我不应该使用 sudo,对吗?
也许您必须在 config.php 文件中定义内容目录所在的位置。根据您服务器的配置,尝试添加以下两行代码之一:
define('WP_CONTENT_DIR', realpath(dirname(__FILE__) . '/content'));
或
define('WP_CONTENT_DIR', realpath($_SERVER['DOCUMENT_ROOT'] . '/content'));
试试第一个,如果不行再试试第二个。我在配置 wp-deploy 时发现了同样的错误,这对我有用。
我找到了一个答案 here 使其可以在我的本地 MBP OSX 服务器上运行。将 define('FS_METHOD','direct');
添加到 wp-config.php
。
确保所有文件和文件夹都是 775
(还没有减少权限,但我肯定 less 是可行的 - 即文件 664
- 在本地也是如此)并且所有文件和文件夹都是归 your user
和 _www
组所有。
在项目文件夹内 运行:
sudo chown user:_www *
sudo chmod -R 775 *
这应该允许您 运行 wpcli 并创建目录而不会出现问题并且无需使用 root
。
NB _www
用于 OSX Apache 用户组。 Ubuntu 你需要 www-data
NBB 运行 Mod PHP 此处,使用(快速)CGI(共享)托管设置 755
目录644
文件通常运行良好。
对我来说,我所要做的就是sudo chmod -R 775 wp-content
。所有者没有影响我的插件更新,我也不必进行任何其他更改。
关于@helgatheviking 所说的 "hardening"...如果您担心安全性并希望尽可能安全,请事后将其改回 755!我会说这是一件好事,只要您不介意在每次 WP-CLI 插件更新时更改权限。
我已经搜索了几天,试图找到解决这个问题的方法,但我已经放弃了,是时候寻求帮助了。
我 运行 Wordpress 在 Ubuntu 14.04 x64 上,使用由 PuPHPet 创建的 Vagrant 服务器(一个自动 GUI,用于使用 Vagrant、Puppet 和 Hiera 创建框那些不知道的人)。我使用 Mark Jaquith 的 WP-Skeleton Wordpress 文件夹设置,并设置了两个共享文件夹; /var/www/wp(sitename/www/wp 在主机上)用于 Wordpress 核心文件,/var/www/content/(sitename/www/content 在主机上)用于自定义内容目录,这是 WP-Skeleton 的目的.
当 SSH 连接到 VM 和 运行 WP-CLI 时,只要 WP-CLI 知道我的内容目录和 Wordpress 核心文件的路径,一切似乎都能正常工作。问题出在尝试安装插件或主题时,如下图-
[07:20 PM]-[vagrant@packer-virtualbox-iso-1422601639]-[/var/www]-[git master]
$ wp plugin install jetpack
Installing Jetpack by WordPress.com (3.3.2)
Downloading install package from https://downloads.wordpress.org/plugin/jetpack.3.3.2.zip...
Unpacking the package...
Warning: Could not create directory.
我的第一个也是到目前为止唯一的想法是这是一个权限错误,但由于我对这方面的了解有限,我只能做这么多,但是,我可以说我已经尝试使用 chmod -v 755 /var/www/content/.
将内容目录的权限更改为 755,然后是 765,甚至是 777即使权限设置为 777,这也没有用。那么还有什么问题呢?我知道这可能与 www-data 的权限有关,但正如我所说,我对查找或更改的内容知之甚少。我确定这很简单,而且我确定这与 WP-CLI 没有直接关系,因为我有一种感觉,如果我使用任何其他网络应用程序尝试安装到我拥有的 www 文件夹同样的问题。
如果有人需要我的任何信息,我会把它包括在内,比如我的 congif.yaml 文件(当使用 Hiera 和 Puppet 时,它存储了通常会在 Vagranfile 中的所有信息,并自动执行安装 Puppet 模块)。它还包括有关 Ubuntu 框、文件夹设置等的信息。
提前致谢, P.J.
更新:
我想补充一点,当我使用 WP-CLI 时,添加 sudo wp plugin install jetpack --allow-root
会起作用,但是,如果我是 root 用户,我不应该使用 sudo,对吗?
也许您必须在 config.php 文件中定义内容目录所在的位置。根据您服务器的配置,尝试添加以下两行代码之一:
define('WP_CONTENT_DIR', realpath(dirname(__FILE__) . '/content'));
或
define('WP_CONTENT_DIR', realpath($_SERVER['DOCUMENT_ROOT'] . '/content'));
试试第一个,如果不行再试试第二个。我在配置 wp-deploy 时发现了同样的错误,这对我有用。
我找到了一个答案 here 使其可以在我的本地 MBP OSX 服务器上运行。将 define('FS_METHOD','direct');
添加到 wp-config.php
。
确保所有文件和文件夹都是 775
(还没有减少权限,但我肯定 less 是可行的 - 即文件 664
- 在本地也是如此)并且所有文件和文件夹都是归 your user
和 _www
组所有。
在项目文件夹内 运行:
sudo chown user:_www *
sudo chmod -R 775 *
这应该允许您 运行 wpcli 并创建目录而不会出现问题并且无需使用 root
。
NB _www
用于 OSX Apache 用户组。 Ubuntu 你需要 www-data
NBB 运行 Mod PHP 此处,使用(快速)CGI(共享)托管设置 755
目录644
文件通常运行良好。
对我来说,我所要做的就是sudo chmod -R 775 wp-content
。所有者没有影响我的插件更新,我也不必进行任何其他更改。
关于@helgatheviking 所说的 "hardening"...如果您担心安全性并希望尽可能安全,请事后将其改回 755!我会说这是一件好事,只要您不介意在每次 WP-CLI 插件更新时更改权限。