我有一台服务器(Ubuntu 16.04),不同的用户可以在上面建立自己的 Wordpress 网站。以下是一些信息:
- Apache 以每个用户的身份使用 mpm-itk 运行。
- 用户被 chroot 到他们的主目录。
- 用户不能在其主目录之外使用 PHP。
- 权限是 apacheuser:apacheuser 以 755 和 644 递归(也尝试过 777)
- public_html 位于其主目录中。
使用的 sshd-config:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
用户可以通过 SFTP 上传 WP 文件然后继续前行。
问题出现在更新或删除插件时(添加、激活和停用都正常)。我收到错误 无法完全删除插件 akismet/akismet.php
错误日志中没有任何内容。
无论我在哪里搜索,我都会得到以下几个选项:
- 安装 SFTP 更新程序插件并将 FS_METHOD 定义为“ftpsockets”。这可行,但我想避免这种情况,以保持安装干净并让用户满意。我实际上只管理服务器,而不是 WP 站点本身,强迫所有用户安装插件看起来不太好。
- Libssl/php-ssl。我收到了登录提示,但尝试时失败了。
- SSH 密钥。我想我已经尝试了那里的每一个指南。SSH 会话立即断开。遇到了和这个人一样的问题Wordpress SFTP 自动更新问题 这也会让用户感到困惑。它还必须适用于多个 PHP 版本 (FPM)。
- 在 wp-config.php 中将 FS_METHOD 定义为“direct”。对我来说不起作用,与原始错误相同。
有人知道我该怎么做才能解决这个问题吗?如果您需要任何信息,请告诉我。
谢谢!
答案1
这已经解决了。
原来是 PHP 的 unlink() 函数被 php.ini 中的 disable_functions 禁用了。从那里删除它,现在一切正常。