我的WordPress路径中的所有文件都由myuser:www-data
Apache作为www数据运行。所有文件和文件夹都具有组写入权限,例如。-rw-rw----
, 但当我尝试安装插件时,会不断提示我输入FTP详细信息。
如果我选择了www数据用户的路径,插件的安装和删除工作将按预期进行,但随后myuser无法编辑文件。我可以将myuser添加到www数据组,但之后myuser可以访问所有其他站点。
我的文件如下:
chown -R myuser:www-data wordpress-folder/*
和chmod\'ed如下:
find wordpress-folder/ -type d -exec chmod 755 {} \\;
find wordpress-folder/ -type f -exec chmod 644 {} \\;
如果我的文件属于www数据组,并且是组可写的,那么WordPress肯定能够安装插件。为什么WordPress不能安装插件?
以下是的输出ls -la
在我的插件文件夹中:
total 48
drwxrwx--- 9 myuser www-data 4096 Aug 5 01:26 .
drwxrwx--- 6 myuser www-data 4096 Aug 5 01:51 ..
drwxrwx--- 6 myuser www-data 4096 Jul 10 16:27 disqus-comment-system
-rw-rw---- 1 myuser www-data 6148 Jul 10 15:37 .DS_Store
drwxrwx--- 7 myuser www-data 4096 Jul 10 16:30 gravityforms
-rw-rw---- 1 myuser www-data 30 Jul 10 15:37 index.php
drwxrwx--- 3 myuser www-data 4096 Jul 10 16:30 lime-export
drwxrwx--- 6 myuser www-data 4096 Aug 1 11:17 mp6
drwxrwx--- 6 myuser www-data 4096 Aug 5 01:26 rewrite
drwxrwx--- 10 myuser www-data 4096 Jul 10 16:38 wordpress-seo
drwxrwx--- 7 myuser www-data 4096 Jul 24 17:14 wp-minify
SO网友:Jesse
我想,我以前也回答过类似的问题。OP声称已正确设置所有文件权限,但仍要求提供ftp凭据。
嗯,这很奇怪。但我认为,这仍然是关于许可的问题。
Wordpress将编写一个临时文件,并通过以下方式比较文件所有者getmyuid() == @fileowner($temp_file_name)
.
如果是真的,它将直接安装插件,而不询问ftp详细信息。
有关更多详细信息,wp-admin/includes/file.php
和get_filesystem_method
作用
因此,我建议您在wordpress安装的根文件夹中编写一个独立的php脚本以进行检查。
1、写入临时文件
2、检查临时文件的所有者
$dir = dirname(__FILE__);
$temp_file = $dir.\'/wp-content/\'.time();
$temp_handle = fopen($temp_file, \'w\');
if ( $temp_handle ) {
if ( getmyuid() == fileowner($temp_file) ){
echo \'file owner correct\';
}
fclose($temp_handle);
unlink($temp_file);
}else{
echo \'cant write file\';
}
SO网友:Mladen Petrovic
简单的解决方法是在wp config中添加FTP凭据。php文件,如下所示:
define( \'FTP_USER\', \'username\' );
define( \'FTP_PASS\', \'password\' );
define( \'FTP_HOST\', \'ftp.example.org:21\' );
但问题可能与您使用不同的PHP进程而不是SUPPP托管有关。