我在本地系统中安装了一个Wordpress博客.但是当我尝试从管理员添加插件时,它要求FTP访问.我需要为Wordpress配置什么才能在没有FTP的情况下上传?
nic*_*kle 278
尝试在wp-config.php中添加代码:
define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)
Nan*_*mar 33
如果您使用的是Ubuntu.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
Run Code Online (Sandbox Code Playgroud)
Abo*_*abi 18
"无论何时使用WordPress控制面板自动安装,升级或删除插件,WordPress都必须对文件系统上的文件进行更改.
在进行任何更改之前,WordPress首先检查它是否有权直接操作文件系统.
如果WordPress没有直接修改文件系统的必要权限,则会要求您提供FTP凭据,以便WordPress可以尝试通过FTP执行所需的操作."
解决方案:为了找出您的apache实例正在运行的用户,请创建一个包含以下内容的测试脚本:
<?php echo(exec("whoami")); ?>
Run Code Online (Sandbox Code Playgroud)
对我来说,它是守护进程,而不是www-data.然后,通过以下方式修复权限:
sudo chown -R daemon /path/to/your/local/www/folder
Run Code Online (Sandbox Code Playgroud)
Mat*_*ard 13
对于这个问题有很多类似的回答,但没有一个完全触及根本原因。塞巴斯蒂安·施密德 (Sebastian Schmid)对原始帖子的评论涉及到这一点,但并不全面。以下是我截至 2018 年 11 月 6 日的看法:
根本原因
当您尝试通过 WordPress 管理界面上传插件时,WordPress 将调用一个名为“get_filesystem_method()”的函数(参考:/wp-admin/includes/file.php:1549)。此例程将尝试将文件写入有问题的位置(在本例中为插件目录)。当然,如果文件权限设置不正确以允许 WordPress 用户(认为执行 php 的用户身份)将文件写入有问题的位置,那么它当然会立即失败。
如果可以创建文件,则此函数会检测临时文件的文件所有者以及函数当前文件的文件所有者(参考:/wp-admin/includes/file.php:1572)并比较两者。如果它们匹配,用 WordPress 的话来说,“WordPress 正在以与 WordPress 文件相同的所有者的身份创建文件,这意味着可以安全地通过 PHP 修改和创建新文件”,并且您的插件已成功上传,无需出现 FTP 凭据提示。如果它们不匹配,您将收到 FTP 凭据提示。
修复
确保运行 php 进程的身份是以下任一文件的所有者:
a) 所有 WordPress 应用程序文件,或...
b) 至少 /wp-admin/includes/file.php 文件
最终意见
我不太热衷于专门将文件所有权应用于 file.php 来解决这个问题(至少可以说,这感觉有点黑客!)。在我看来,WordPress 代码库目前倾向于让我们在与 WordPress 应用程序文件的文件所有者相同的用户主体下执行 PHP 进程。我欢迎社区对此提出一些评论。
Ken*_*nny 10
在OSX上,我使用了以下内容,它起作用了:
sudo chown -R _www:_www {path to wordpress folder}
Run Code Online (Sandbox Code Playgroud)
_www是PHP在Mac上运行的用户.
(你可能还需要chmod一些文件夹.我先完成了它并且它没有修复它.直到我执行chown命令它才有效,所以我不确定它是否是chown命令单独,或chmod和chown的组合.)
我递归地将wordpress文件夹的所有权更改为www-data并重新启动了apache.
sudo chown -R www-data:www-data <folderpath>
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力!
我按照此处列出的步骤在 Ubuntu 14.04 上本地安装了 WordPress,然后简单地运行:
sudo chown -R www-data:www-data {path_to_your_project_directory}
Run Code Online (Sandbox Code Playgroud)
解决了我下载插件的问题。我把这篇文章留在这里的唯一原因是,当我用谷歌搜索我的问题时,这是第一个结果,它让我找到了我的问题的解决方案。
希望这对任何人都有帮助!
对我来说,解决的过程是:(
当然,您必须用您的用户替换 myUser,whoami如果您不知道,请向您展示)
将我自己包含在 www-data 组中(以便无需 sudo 即可访问和编辑文件):
sudo usermod -aG www-data myUser
Run Code Online (Sandbox Code Playgroud)
将我自己和该组设置为文件所有者:
sudo chown -R myUser:www-data /var/www/html
Run Code Online (Sandbox Code Playgroud)
为组设置主要权限(组也必须写入):
sudo find . -type f -exec chmod 664 {} \;
sudo find . -type d -exec chmod 775 {} \;
Run Code Online (Sandbox Code Playgroud)
然后在 config.php 中添加这一行
define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)
如果在安装插件期间,Wordpress 会询问您的主机名或 FTP 详细信息。然后按照以下步骤操作:
登录到您的服务器并导航到/var/www/html/wordpress/。打开 wp-config.php 并在 define('DB_COLLATE') 之后添加这一行
define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)
如果您收到“无法创建目录”错误。以递归方式为您的 wordpress 目录授予写权限
chmod -R go+w wordpress
Run Code Online (Sandbox Code Playgroud)
笔记。为了安全起见,一旦您将插件安装为
chmod -R go-w wordpress
Run Code Online (Sandbox Code Playgroud)
解决此问题最简单的方法是将以下 FTP 信息添加到您的wp-config.php
define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
Run Code Online (Sandbox Code Playgroud)
FTP_BASE是 WordPress 安装的“base”(ABSPATH) 文件夹的完整路径 FTP_CONTENT_DIR是 WordPress 安装的 wp-content 文件夹的完整路径。 FTP_PLUGIN_DIR是 WordPress 安装的插件文件夹的完整路径。
我们遇到了同样的问题,这是一个更大问题的一部分。建议的解决方案
define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)
隐藏该窗口,但我们在加载主题和升级等方面仍然遇到问题。它与权限有关,但在我们的例子中,我们通过从php 操作系统供应商 mod_php迁移到更安全的php 操作系统供应商 FastCGI 应用程序来解决该问题。