yii php framework“应用程序运行时路径无效”。例外

时间:2011-06-04 22:48:09

标签: php yii

我尝试通过执行

制作一个yii项目进行测试
/var/www/html/yii/framework/yiic webapp demo

当我去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.

起初我以为它真的不可写,所以我做了:

chmod 777 /var/www/html/demo/protected/runtime

没有用到我执行的最后一个想法:

chmod 777 -R /var/www/html/demo/

我仍然得到同样的例外。关于可能出错的任何想法?

--- --- EDIT

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

我仍然无法在php脚本中编写文件

9 个答案:

答案 0 :(得分:24)

应该工作...所以也许尝试将您的Apache用户(通常是'www-data')设置为/runtime的所有者?类似的东西:

 chown -R www-data:www-data /var/www/html/demo/protected/runtime

也可能是Apache umask问题。查看Yii论坛,其中包含以下有用的帖子:http://www.yiiframework.com/forum/index.php?/topic/19400-question-about-directoryfile-permissions/

您不必将整个项目设置为777 ,这是非常不安全的。我认为/assets/protected/runtime是唯一需要写权限的目录(775)。

答案 1 :(得分:6)

看起来您可能启用了SELinux,这会强制执行它自己的安全策略,对于Web应用程序来说可能是一个真正的痛苦,并且当它最终导致这样的错误时非常烦人。每当你遇到时髦的权限问题时,最好检查一下你是否设置了它: /usr/sbin/getenforce(或类似的,取决于您所使用的系统)。

请参阅:http://www.crypt.gen.nz/selinux/disable_selinux.html以获得良好的概述以及如何将其关闭(同样,细节可能因操作系统/内核版本而异)。如果它是一个无法公开访问的测试机器,您可以非常安全地将其关闭,否则,您应该阅读上面的网站以了解它的作用。大多数Linux软件包管理器都可以安装文件来帮助您管理特定应用程序的策略。在RH / CentOS上,您也可以使用/usr/bin/system-config-securitylevel-tui打开/关闭它。

答案 2 :(得分:5)

您为chmod命令输入了错误的语法。试试这个:

sudo chmod -R 777 ./var/www/*

在提示时输入密码。

重要提示:

命令行末尾的星号非常重要。它表示当前目录中的所有文件。

答案 3 :(得分:1)

你必须使用这样的semanage配置,允许php-fpm写入目录访问

# semanage fcontext -a -t httpd_sys_rw_content_t 'YOUR_PATH_HERE'
# restorecon -v 'YOUR_PATH_HERE'

答案 4 :(得分:1)

当我在我的服务器上检查它时,'runtime'文件夹丢失了,所以我只是将它上传到服务器上并且它可以工作。以下是'runtime'文件夹yoursite \ protected \ runtime -

的路径

答案 5 :(得分:0)

尝试上传'运行时'您的服务器上的文件夹,这对我有用。

答案 6 :(得分:-1)

更改运行时文件夹的访问权限。在我的情况下,在plesk并行面板中更改rwx rwx rwx以便运行时文件夹工作。

答案 7 :(得分:-1)

使用以下命令

更改了对网站整个文件夹的访问权限
sudo chmod -R 777 'name of your website folder'

这将解决问题。

答案 8 :(得分:-1)

如果您确定文件夹的文件权限设置正确并且仍然收到错误,那么如果您使用CentOS,则禁用SElinux或为SElinux添加例外。 编辑/etc/selinux/config file以禁用SElinux或运行此命令以添加例外

sudo chcon -t httpd_sys_rw_content_t /path/to/ur/annoying/folder -R