AWS CakePHP - tmp 目录需要可写

Posted

技术标签:

【中文标题】AWS CakePHP - tmp 目录需要可写【英文标题】:AWS CakePHP - tmp directory needs to be writeable 【发布时间】:2019-11-26 09:24:20 【问题描述】:

我在 AWS 上设置了一个服务器,并且我已经将我的应用程序部署到它上面,就像我在其他服务器上做了很多次一样。 将core.php debug转为2后,显示如下错误

警告:/var/www/html/XXX/XXX/app/tmp/cache/persistent/ 在 /var/www/html/XXX/XXX/lib/Cake/Cache/Engine/FileEngine.php 中不可写在第 389 行

这是我每次从 git 拉下代码时都会收到的常见警告。

像往常一样我跑

chmod -R 777 tmp

我仍然收到警告,直到我修复它才让我继续!

我已尝试重命名 tmp 文件夹

mv tmp tmp1

我明白了

mkdir():/var/www/html/XXX/XXX/lib/Cake/Cache/Engine/FileEngine.php 第 384 行中的权限被拒绝

当您的应用文件夹中没有 tmp 文件夹时显示的警告是什么。

我也尝试将文件夹用户组更改为 apache:apache,但仍然没有运气。

除了我刷新页面时得到的错误日志之外,什么都没有显示。

【问题讨论】:

您可以将其配置为使用 Web 根目录之外的临时目录吗?无论如何,这似乎是一个不好的地方。如果有人找到该路径,他们就可以上传恶意 PHP 代码并运行它。 【参考方案1】:

更改目录的所有者。

for example
  chown nginx:nginx ../tmp
  chown apache:apache ../tmp

【讨论】:

检查这个:***.com/questions/8879614/…【参考方案2】:

找出问题所在。 SELinux 被设置为强制执行

/etc/selinux/config

将其设置为许可,现在可以正常工作了

【讨论】:

hmm...SELinux 阻止它是有原因的。允许写入 Web 根目录下的目录是危险的。【参考方案3】:

关注CakePHP的Installation Guide

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | 
grep -v root | head -1 | cut -d\  -f1`
setfacl -R -m u:$HTTPDUSER:rwx tmp
setfacl -R -d -m u:$HTTPDUSER:rwx tmp
setfacl -R -m u:$HTTPDUSER:rwx logs
setfacl -R -d -m u:$HTTPDUSER:rwx logs

【讨论】:

以上是关于AWS CakePHP - tmp 目录需要可写的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 写入 aws lambda 中的 /tmp 目录

如何对从 AWS OpsWorks 部署的应用程序拥有组可写文件权限?

linux系统下怎样删除/tmp下的所有文件

非法字符串偏移'tmp_name'cakephp3

列出 CakePHP 文件上传错误代码

sparkpy 坚持 HDFS 上的 root scratch dir: /tmp/hive 应该是可写的