LinuxMint 上的 WordPress:无法创建目录(或写入文件)

LinuxMint 上的 WordPress:无法创建目录(或写入文件)

我运行 Linux Mint,带有 Apache2、PHP 和 MySQL。我已经激活了 Apache 的模块,以便public_html可以使用用户的模块并可以从它们运行 PHP 脚本。我在我的public_html(即)中安装了 WordPress ~/public_html/wordpress,但它不能完全运行。

当我尝试更改背景图像或标题图像时,收到一条错误消息,指出无法创建存储上传内容的目录(年/月或月/年)。

显然我的网络服务器没有权限在public_html或其子目录(如 下的一些目录~/public_html/wordpress)中创建目录 - 可能也没有创建文件。

因此我想知道我的选择是什么。是否有一些我必须添加的模块或一些我必须修复的配置文件,以便网络服务器可以写入?或者我是否必须更改 - 及其子目录的所有者和/或组public_html(有没有办法确保子目录属于同一所有者/组)? ...显然不会阻止我更改我的网页。非常欢迎提出建议、建议和最佳实践。

我知道如果我以 root 身份安装 WordPress,可能会遇到更少的麻烦/var/www,但我宁愿避免这种解决方案。

答案1

显然我的网络服务器没有权限在 public_html 或其子目录(如 ~/public_html/wordpress 下的某些目录)中创建目录 - 也可能无权创建文件。

这确实很有可能是问题所在。但是,您不必将自己锁定在该目录之外:有许多选项允许您将文件保留在该目录中并允许 Web 服务器写入该目录:

  1. 将自己放入www-data组:sudo gpasswd -a $(whoami) www-data,然后更改 public_html 目录的组:sudo chown -R $(whoami):www-data ~/public_html。这样您和 Web 服务器都将共享该目录。

  2. 使用粘性位:这将允许 Web 服务器将文件写入该目录,同时还携带该文件夹的组,从而允许您仍然以用户身份访问上传目录:chmod g+rws,o+rwx ~/public_html/wordpress/wp-content

  3. 使用 ACL 指定高级权限以允许服务器写入目录:setfacl -m u:www-data:rwx ~/public_html/wordpress/wp-content。如果您走那条路,我建议您阅读手动的对于 ACL,因为它们非常强大并且您可以用它们做很多事情。

警告

但请注意,上述解决方案都不太适合生产环境,因为它们都将允许服务器上允许运行 PHP 代码的任何用户也拥有 Web 服务器权限,因此可能会将恶意文件放入您的上传目录中。确保仅有的使上传目录可写,并确保放置一个 .htaccess 禁止从该上传目录执行任何代码。对于生产服务器,我建议使用 suexec、php-fpm 或任何其他方式在 Web 服务器外部执行 PHP 代码,以用户的系统用户身份运行 PHP。

相关内容