2011-10-31 16 views
5

Recibo el siguiente error cuando ejecuto el comando personalizado yiic en el terminal.yii error al ejecutar el comando personalizado

Parece que no puedo rastrear la causa de este error, ¿puede alguien señalarme en la dirección correcta? Sé que DB está funcionando bien ya que otras partes de la aplicación funcionan.

<?php 

    class RbacCommand extends CConsoleCommand 
    { 
     private $_authManager; 

     public function getHelp() 
     { 
      return "<<<EOD 

      USAGE 
       rbac 

      DESCRIPTION 
       This command generates an initial RBAC authorization hierarchy. 

      EOD"; 
     } 

     public function run($args) 
     { 
      if(($this->_authManager=Yii::app()->authManager)===null) 
      { 
       echo "Error: an authorization manager, named 'authManager' must be configured to use this command.\n"; 
       echo "If you already added 'authManager' component in applicaton configuration,\n"; 
       echo "please quit and re-enter the yiic shell.\n"; 
       return; 
      } 

      echo "This command will create three roles: Owner, Member, and Reader and the following permissions:\n"; 
      echo "create, read, update and delete user\n"; 
      echo "create, read, update and delete project\n"; 
      echo "create, read, update and delete issue\n"; 
      echo "Would you like to continue? [Yes|No]"; 

      if(!strncasecmp(trim(fgets(STDIN)),'y',1)) 
      { 
       $this->_authManager->clearAll(); 

       $this->_authManager->createOperation("createUser","create a new user"); 
       $this->_authManager->createOperation("readUser","read user profile information"); 
       $this->_authManager->createOperation("updateUser","update a users information"); 
       $this->_authManager->createOperation("deleteUser","remove a user from a project"); 

       $this->_authManager->createOperation("createProject","create a new project"); 
       $this->_authManager->createOperation("readProject","read project information"); 
       $this->_authManager->createOperation("updateProject","update project information"); 
       $this->_authManager->createOperation("deleteProject","delete a project"); 

       $this->_authManager->createOperation("createIssue","create a new issue"); 
       $this->_authManager->createOperation("readIssue","read issue information"); 
       $this->_authManager->createOperation("updateIssue","update issue information"); 
       $this->_authManager->createOperation("deleteIssue","delete a issue"); 

       $role=$this->_authManager->createRole("member"); 
       $role->addChild("reader"); 
       $role->addChild("createIssue"); 
       $role->addChild("updateIssue"); 
       $role->addChild("deleteIssue"); 

       $role=$this->_authManager->createRole("owner"); 
       $role->addChild("reader"); 
       $role->addChild("member"); 
       $role->addChild("createUser"); 
       $role->addChild("updateUser"); 
       $role->addChild("deleteUser"); 
       $role->addChild("createProject"); 
       $role->addChild("updateProject"); 
       $role->addChild("deleteProject"); 
      } 
     } 
    } 

?> 



users-MacBook-Air:protected user$ ./yiic shell ../index.php 
Yii Interactive Tool v1.1 (based on Yii v1.1.2) 
Please type 'help' for help. Type 'exit' to quit. 
>> rbac 

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/user/Dropbox/localhost/yii/framework/db/CDbConnection.php on line 302 
exception 'CDbException' with message 'CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] No such file or directory' in /Users/user/Dropbox/localhost/yii/framework/db/CDbConnection.php:267 
Stack trace: 
#0 /Users/user/Dropbox/localhost/yii/framework/db/CDbConnection.php(242): CDbConnection->open() 
#1 /Users/user/Dropbox/localhost/yii/framework/db/CDbConnection.php(221): CDbConnection->setActive(true) 
#2 /Users/user/Dropbox/localhost/yii/framework/base/CModule.php(363): CDbConnection->init() 
#3 /Users/user/Dropbox/localhost/yii/framework/web/auth/CDbAuthManager.php(570): CModule->getComponent('db') 
#4 /Users/user/Dropbox/localhost/yii/framework/web/auth/CDbAuthManager.php(69): CDbAuthManager->getDbConnection() 
#5 /Users/user/Dropbox/localhost/yii/framework/base/CModule.php(363): CDbAuthManager->init() 
#6 /Users/user/Dropbox/localhost/yii/framework/base/CModule.php(86): CModule->getComponent('authManager') 
#7 /Users/user/Dropbox/localhost/trackstar/protected/commands/shell/RbacCommand.php(22): CModule->__get('authManager') 
#8 /Users/user/Dropbox/localhost/yii/framework/cli/commands/ShellCommand.php(144): RbacCommand->run(Array) 
#9 /Users/user/Dropbox/localhost/yii/framework/cli/commands/ShellCommand.php(99): ShellCommand->runShell() 
#10 /Users/user/Dropbox/localhost/yii/framework/console/CConsoleCommandRunner.php(62): ShellCommand->run(Array) 
#11 /Users/user/Dropbox/localhost/yii/framework/console/CConsoleApplication.php(88): CConsoleCommandRunner->run(Array) 
#12 /Users/user/Dropbox/localhost/yii/framework/base/CApplication.php(135): CConsoleApplication->processRequest() 
#13 /Users/user/Dropbox/localhost/yii/framework/yiic.php(33): CApplication->run() 
#14 /Users/user/Dropbox/localhost/trackstar/protected/yiic.php(7): require_once('/Users/user/Dro...') 
#15 /Users/user/Dropbox/localhost/trackstar/protected/yiic(4): require_once('/Users/user/Dro...') 
#16 {main} 
>> 

Respuesta

11

Probar:

Cambio localhost a 127.0.0.1 en la cadena de conexión.

O:

Añadir unix_socket=/path/to/socket en la cadena de conexión.

+1

funciona como un encanto –

+0

intentado solo la primera opción y funciona :) – fortm

+0

¡Segundo lo resolvió para mí! – darkheir

0

Por defecto, Yu utiliza diferentes archivos de configuración en protected/config/:

  • main.php para la web,
  • console.php de la CLI,
  • test.php para las pruebas (unidad).

Probablemente configurada la conexión de DB en main.php pero se olvidó de hacerlo en console.php.

Cuestiones relacionadas