Symfony - RuntimeException:无法写入缓存文件

Jes*_*zie 11 xampp macos symfony

我无法正确获取权限.我试图通过XAMPP在Mac上的本地环境中运行它.

我尝试过以下方法:

  • 做揭幕
  • 设置权限
  • 通过清除缓存 php app/console cache:clear

ema*_*ref 24

rm -rf app/cache/*
rm -rf app/logs/*

sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
Run Code Online (Sandbox Code Playgroud)

确保将www-data用户替换为运行Web服务器的用户.通过运行命令找出您的Web服务器运行的用户:

ps aux | grep http
Run Code Online (Sandbox Code Playgroud)

要么

ps aux | grep apache
Run Code Online (Sandbox Code Playgroud)

您可能还需要启用ACL.有关更多信息,请参阅安装文档,有关ACL的信息,请参阅此页面.

从命令行运行Symfony时,缓存的文件/目录由您登录的用户创建,在您的情况下为"jess".在浏览器中运行网页时,它们是由Web服务器用户创建的 - 在您的情况下,用户"nobody".您的用户无权修改Web服务器创建的文件和目录,反之亦然.

将您的Web服务器更改为与登录用户相同的用户并不是理想的解决方案,因为它不是一个非常安全的选项,当您将站点放在另一台服务器上时,您仍然会遇到同样的问题.

解决方案是确保您已遵循http://symfony.com/doc/current/book/installation.html上安装文档的"设置权限"部分.

确保rm -rf文件夹的内容,而不仅仅是php app/console cache:clear,因为symfony clear cache命令将创建目录/文件,这些目录/文件仍然无法由您的Web服务器写入.


Vit*_*ian 6

通常,您应该从与php5-cli相同的用户运行您的Web服务器.您项目所在的文件夹应具有此用户的所有权限.

你应该change user for project directory或者简单地chmod -R 777 app/cachechmod -R 777 app/logs