1

当我尝试使用 Gii Controller Generator 时,我得到:

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

我以 root 身份创建了一个 Yii 演示项目,因此我递归地将 yiidemo(project's folder) 所有者和组更改为 'web-data'。我没有改变权限。这没有帮助。

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

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

4

1 回答 1

4

使用 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

在此处阅读有关 gii 的更多信息

于 2014-05-02T20:07:51.453 回答