2011-10-31 35 views
5

Tôi nhận được lỗi dưới đây khi tôi chạy lệnh yiic tùy chỉnh của mình trong thiết bị đầu cuối.lỗi yii trong khi thực thi lệnh tùy chỉnh

Tôi dường như không thể theo dõi nguyên nhân của lỗi này, bất kỳ ai cũng có thể chỉ cho tôi đúng hướng. Tôi biết DB đang làm việc tốt như các phần khác của công việc ứng dụng.

<?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} 
>> 

Trả lời

11

Hãy thử:

Thay đổi localhost để 127.0.0.1 trong chuỗi kết nối của bạn.

HOẶC:

Thêm unix_socket=/path/to/socket vào chuỗi kết nối của bạn.

+1

hoạt động như một nét duyên dáng –

+0

chỉ thử tùy chọn đầu tiên và nó hoạt động :) – fortm

+0

Thứ hai đã giải quyết nó cho tôi! – darkheir

0

Theo mặc định, Yii sử dụng file cấu hình khác nhau trong protected/config/:

  • main.php cho web,
  • console.php cho CLI,
  • test.php cho (đơn vị) kiểm tra.

Bạn có thể định cấu hình kết nối DB của mình trong main.php nhưng quên làm điều đó trong console.php.

Các vấn đề liên quan