我试图通过执行来制作一个yii项目进行测试
/var/www/html/yii/framework/yiic webapp demo
Run Code Online (Sandbox Code Playgroud)
当我去localhost/demo时,我得到了错误:
Application runtime path "/var/www/html/demo/protected/runtime" is not valid.
Please make sure it is a directory writable by the Web server process.
Run Code Online (Sandbox Code Playgroud)
起初我以为它确实不可写,所以我做了:
chmod 777 /var/www/html/demo/protected/runtime
Run Code Online (Sandbox Code Playgroud)
没有工作,所以我执行的最后一个想法:
chmod 777 -R /var/www/html/demo/
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的例外.关于可能出错的任何想法?
- -编辑 - -
FFS这让我疯狂
drwxrwxrwx. 4 apache apache 4096 Jun 5 00:06 commands
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 components
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 config
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 controllers
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 data
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 extensions
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 messages
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 migrations
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 models
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 runtime
drwxrwxrwx. 7 apache apache 4096 Jun 5 00:06 tests
drwxrwxrwx. 5 apache apache 4096 Jun 5 00:06 views
-rwxrwxrwx. 1 apache apache 71 Jun 5 00:02 yiic
-rwxrwxrwx. 1 apache apache 380 Jun 5 00:02 yiic.bat
-rwxrwxrwx. 1 apache apache 178 Jun 5 00:02 yiic.php
Run Code Online (Sandbox Code Playgroud)
我仍然无法从PHP脚本中编写文件
tha*_*smt 25
这应该工作...所以也许尝试设置你的Apache用户(通常是'www-data')作为所有者/runtime?就像是:
chown -R www-data:www-data /var/www/html/demo/protected/runtime
Run Code Online (Sandbox Code Playgroud)
可能也是一个Apache umask问题.查看Yii论坛,其中包含以下有用的帖子:http://www.yiiframework.com/forum/index.php?/topic/19400-question-about-directoryfile-permissions /
您不应该将整个项目设置为777,这是非常不安全的.我认为/assets并且/protected/runtime是唯一需要写权限的目录(775).
看起来你可能启用了SELinux,这会强制执行它自己的安全策略,对于网络应用来说可能是一个真正的痛苦,当它最终导致这样的错误时非常烦人.每当你遇到时髦的权限问题时,最好检查一下你是否设置了它:(
/usr/sbin/getenforce 或类似的,取决于你所使用的系统).
请参阅:http://www.crypt.gen.nz/selinux/disable_selinux.html以获得良好的概述以及如何将其关闭(同样,细节可能因操作系统/内核版本而异).如果它是一个无法公开访问的测试机器,您可以非常安全地将其关闭,否则,您应该阅读上面的网站以了解它的作用.大多数Linux软件包管理器都可以安装文件来帮助您管理特定应用程序的策略.在RH/CentOS上,您还可以使用/usr/bin/system-config-securitylevel-tui 它来打开/关闭它.
小智 5
您输入的chmod命令语法错误.试试这个:
sudo chmod -R 777 ./var/www/*
Run Code Online (Sandbox Code Playgroud)
当你提示时输入密码.
重要的提醒:
命令行末尾的星号非常重要.它表示当前目录中的所有文件.