2014-05-02 182 views
1

的Yii当我试图用GII的控制器生成我得到:Linux的权限问题与使用GII

file_put_contents(.../gii-1.1.14/ControllerCode.php): failed to open stream: Permission denied 

我创建了一个Yii的示范项目为根,所以我递归改变yiidemo(项目文件夹)所有者并将其分组为'web-data'。我保持权限不变。这没有帮助。

然后我有递归更改此文件夹内的权限为777。一切正常。

我试过不同的组合(例如目录/文件:755/644)的目录/文件,但没有工作。我知道777不是最好的解决方案。 如何找到这种情况下的最佳工作权限组合?

回答

3

当使用Gii时,它会在受保护的目录中创建新文件。换句话说,PHP和Apache需要写在你的受保护的目录中。

默认情况下,出于安全原因,Gii被配置为仅在开发(本地主机)上可访问。因此,它只能安装在开发机器上。因为它可以在应用程序中生成新的PHP脚本文件,所以我们应该充分注意其安全措施(例如密码,IP过滤器)。 如果你想让它在其他可信任的计算机上访问,你可以配置Gii模块。

return array(
...... 
'modules'=>array(
    'gii'=>array(
     'class'=>'system.gii.GiiModule', 
     'password'=>'pick up a password here', 
     // 'ipFilters'=>array(...a list of IPs...), 
     // 'newFileMode'=>0666, 
     // 'newDirMode'=>0777, 
    ), 
), 
); 

因为GII可以产生并在现有的 应用保存新的代码文件,我们需要确保Web服务器进程有这样做 适当的权限。上面的GiiModule :: newFileMode和GiiModule :: newDirMode属性控制应该如何生成新文件和目录。使用组:

许可,您可以更改您的保护所有者

$ sudo chown yourUserName:www-data path/to/protected 
$ sudo chmod 775 path/to/protected -R 

read more about gii here

+0

对不起,迟到的答复。我试图让它工作。因此,现在我有'drwxrwxr-x 3 {我} www-data 4096 Mai 5 22:12运行时'这是受保护的,并且出现错误'应用程序运行时路径“/ opt/lampp/htdocs/helloworld/protected/runtime”无效。请确保它是一个可由Web服务器进程写入的目录.'所有'helloworld'目录归{me}所有:www-拥有权限775的数据.Changeig所有者对'www-data:www-data'不修复问题。我还可以做些什么? – Alan

+0

同样,一切工作与777权限设置为'受保护'。看起来服务器进程在'www-data'组外运行。但是,我应该将谁设置为一组来避免设置777?或者(如果我理解你的话)我是否应该在开发机器上保留777,然后在生产机器上更改为775? – Alan