2014-05-02 5 views
1

Quand je suis en train d'utiliser Gii Controller Générateur je reçois:autorisations Linux problème avec Yû à l'aide Gii

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

J'ai créé un projet de démonstration Yû comme une racine, donc je yiidemo récursive modifié (dossier du projet) propriétaire et groupe à 'données Web'. J'ai laissé les permissions inchangées. Cela n'a pas aidé.

Ensuite, j'ai changé récursivement les autorisations dans ce dossier à 777. Tout a fonctionné.

J'ai essayé différentes combinaisons (par exemple, dir/fichier: 755/644) pour les répertoires/fichiers, mais aucune n'a fonctionné. Je sais que 777 n'est pas la meilleure solution. Comment puis-je trouver la combinaison optimale d'autorisations de travail pour ce cas?

Répondre

3

Lorsque vous utilisez Gii, il crée de nouveaux fichiers dans le répertoire protégé. En d'autres termes, php et apache doivent écrire dans votre répertoire protégé.

Par défaut, pour des raisons de sécurité, Gii est configuré pour être accessible uniquement en développement (localhost). Par conséquent, il ne doit être installé que sur une machine de développement. Parce qu'il peut générer de nouveaux fichiers de script PHP dans l'application, nous devrions accorder une attention suffisante à ses mesures de sécurité (par exemple, mot de passe, filtres IP). Si vous souhaitez le rendre accessible sur d'autres ordinateurs fiables, vous pouvez configurer le module Gii comme.

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, 
    ), 
), 
); 

Parce que Gii peut générer et enregistrer de nouveaux fichiers de code dans l'application actuelle, nous devons nous assurer que le processus de serveur Web a faire l'autorisation appropriée . Les propriétés ci-dessus GiiModule :: newFileMode et GiiModule :: newDirMode contrôlent la façon dont les nouveaux fichiers et les répertoires doivent être générés.

pour l'autorisation que vous pouvez changer votre propriétaire protégé: groupe à l'aide:

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

read more about gii here

+0

Désolé pour la réponse tardive. J'essayais de le faire fonctionner. Donc maintenant j'ai 'drwxrwxr-x 3 {me} www-data 4096 Mai 5 22:12 runtime' qui est protégé et j'obtiens une erreur' Chemin d'exécution de l'application '/ opt/lampp/htdocs/helloworld/protected/runtime " n'est pas valide. S'il vous plaît assurez-vous qu'il s'agit d'un répertoire accessible en écriture par le serveur Web. »Tout le répertoire 'helloworld' appartient à {me}: www-data avec les permissions 775. Les propriétaires de Changig à' www-data: www-data' ne règlent pas le problème. Que puis-je faire d'autre? – Alan

+0

Encore une fois, tout fonctionne avec 777 permissions définies pour 'protected'. Il semble que le processus serveur s'exécute en dehors du groupe 'www-data'. Mais alors, qui dois-je définir en groupe pour éviter de mettre 777? Ou (si je vous comprends bien) devrais-je laisser 777 sur la machine de développement puis passer à 775 sur la production? – Alan

Questions connexes