当我尝试使用Gii Controller Generator时,我得到:
file_put_contents(.../gii-1.1.14/ControllerCode.php): failed to open stream: Permission denied
我已经创建了一个Yii演示项目作为根,所以我递归地将yiidemo(项目文件夹)所有者和组更改为“网络数据”。我保留了权限不变。这没有用。
然后我以递归方式将此文件夹中的权限更改为777 。一切顺利。
我为目录/文件尝试过不同的组合(例如dir / file:755/644),但都没有。我知道777不是最好的解决方案。 如何为此案例找到最佳工作权限组合?
答案 0 :(得分:4)
使用Gii时,它会在受保护的目录中创建新文件。换句话说,php和apache需要写入受保护的目录。
默认情况下,出于安全原因,Gii配置为只能在开发(localhost)上访问。因此,它应该只安装在开发机器上。因为它可以在应用程序中生成新的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