这可能看起来像一个重复的,但我已经阅读了类似的问题,并尝试了他们的build议,并没有奏效。
当我导航到我的CakePHP网站时,我得到以下错误
警告(2):mkdir():权限被拒绝[CORE / src / Cache / Engine / FileEngine.php,第417行]
警告:file_put_contents(/var/www/html/my-application/logs/error.log)[function.file-put-contents]:未能打开stream:/ var / www / html / my-application / vendor / cakephp / cakephp / src / Log / Engine / FileLog.php在134行
- AdjustTokenPrivileges错误6 – 处理无效
- 什么可以覆盖在Linux目录上的组权限?
- Apache&PHP的默认窗口用户
- 在winapi中以最低的权限运行进程
- 如何为一个尚未存在的用户安装一个目录
警告(512):/ var / www / html / my-application / tmp / cache / persistent /不可写[CORE / src / Cache / Engine / FileEngine.php,第425行]
警告(2):file_put_contents(/var/www/html/my-application/logs/error.log)[function.file-put-contents]:未能打开stream:Permission denied [CORE / src / Log / Engine / FileLog.php,第134行]
警告:file_put_contents(/var/www/html/my-application/logs/error.log)[function.file-put-contents]:未能打开stream:/ var / www / html / my-application / vendor / cakephp / cakephp / src / Log / Engine / FileLog.php在134行
事情是我相信,PHP可以访问所有必要的文件。
PHP作为用户apache运行,在apache组中运行。 证据:
[ec2-user@cv-stg01 my-application]$ ps -efl | grep apache 5 S apache 21863 21861 0 80 0 - 124037 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21864 21861 0 80 0 - 123971 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21865 21861 0 80 0 - 123485 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21867 21861 0 80 0 - 124037 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21868 21861 0 80 0 - 123485 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21869 21861 0 80 0 - 123485 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21870 21861 0 80 0 - 124037 SYSC_s 03:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21881 21861 0 80 0 - 123485 SYSC_s 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21882 21861 0 80 0 - 123485 SYSC_s 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 5 S apache 21883 21861 0 80 0 - 125444 ep_pol 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND 0 S ec2-user 21934 21785 0 80 0 - 28161 pipe_w 03:20 pts/0 00:00:00 grep --color=auto apache
相关目录由apache拥有:apache并且拥有设置为777的权限:
[ec2-user@cv-stg01 my-application]$ ls -l total 132 drwxrwxr-x. 2 apache apache 47 May 12 21:16 bin -rw-rw-r--. 1 apache apache 1128 May 12 21:16 composer.json -rw-rw-r--. 1 apache apache 93002 May 12 21:16 composer.lock drwxrwxr-x. 3 apache apache 4096 May 12 21:19 config -rw-rw-r--. 1 apache apache 648 May 12 21:16 index.php drwxrwxrwx. 2 apache apache 34 May 13 03:10 logs -rw-rw-r--. 1 apache apache 1139 May 12 21:16 phpunit.xml.dist drwxrwxr-x. 2 apache apache 18 May 12 21:16 plugins -rw-rw-r--. 1 apache apache 980 May 12 21:16 README.md drwxrwxr-x. 9 apache apache 4096 May 12 21:16 src drwxrwxrwx. 4 apache apache 55 May 12 21:16 tests drwxrwxrwx. 2 apache apache 6 May 13 03:17 tmp drwxrwxr-x. 28 apache apache 4096 May 12 21:16 vendor drwxrwxr-x. 9 apache apache 4096 May 12 21:16 webroot
tmp /中的子目录也具有正确的权限:
[ec2-user@cv-stg01 tmp]$ ls -l total 0 drwxrwxrwx. 5 apache apache 48 May 12 21:16 cache drwxrwxrwx. 2 apache apache 18 May 12 21:16 sessions drwxrwxrwx. 2 apache apache 18 May 12 21:16 tests
我也尝试重新应用权限,以防万一,使用
sudo chown -R apache:apache /var/www/html/my-application sudo chmod -R 777 /var/www/html/my-application/tmp sudo chmod -R 777 /var/www/html/my-application/logs sudo chmod -R 777 /var/www/html/my-application/tests
而且我甚至以apache身份login,自己编辑文件,没有问题
sudo su -s /bin/bash apache vi /var/www/html/my-applciation/logs/error.log
我真的正在努力解决现在的问题。
我们有SELinux安装/启用,所以也许这是造成问题?
帮助将不胜感激。
谢谢,
YM
尝试这个:
chown -R apache.apache /path/to/html/ chmod -R 777 /path/to/html/
然后重启httpd服务:
service httpd restart
问题是SELinux。 它使用以下命令解决:
chcon -R system_u:object_r:var_lib_t:s0 tmp chcon -R system_u:object_r:var_lib_t:s0 logs chcon system_u:object_r:httpd_var_lib_t:s0 logs/* chcon system_u:object_r:httpd_var_lib_t:s0 tmp/debug_kit.sqlite chcon system_u:object_r:var_lib_t:s0 tests chmod -R ow tmp logs tests
所有人都知道,设置777
权限并不是一个好的做法。 我在CakePHP安装文档中发现了这个有用的提示,希望这有助于(;
setfacl -R -mu:apache:rwx app/tmp setfacl -R -d -mu:apache:rwx app/tmp