Jump to content
Larry Ullman's Book Forums


  • Posts

  • Joined

  • Last visited

bartleyg's Achievements


Newbie (1/14)



  1. Larry, Just to make sure I didn't have some other custom configuration issue causing the problem I created a new web application on another machine. I then created the commands/SayHelloCommand.php file identical to the one I used earlier and attempted to run the console command: $ ./yiic sayhello PHP Error[2]: include(SayHelloCommand.php): failed to open stream: No such file or directory in file /opt/local/www/yii/framework/YiiBase.php at line 427 #0 /opt/local/www/yii/framework/YiiBase.php(427): autoload() #1 unknown(0): autoload() #2 /opt/local/www/yii/framework/console/CConsoleCommandRunner.php(170): spl_autoload_call() #3 /opt/local/www/yii/framework/console/CConsoleCommandRunner.php(67): CConsoleCommandRunner->createCommand() #4 /opt/local/www/yii/framework/console/CConsoleApplication.php(92): CConsoleCommandRunner->run() #5 /opt/local/www/yii/framework/base/CApplication.php(180): CConsoleApplication->processRequest() #6 /opt/local/www/yii/framework/yiic.php(33): CConsoleApplication->run() #7 /opt/local/www/html/myapp/protected/yiic.php(7): require_once() #8 /opt/local/www/html/myapp/protected/yiic(4): require_once() I then changed config/console.php to add the import statement so autoloading could find the new command: <?php // This is the configuration for yiic console application. // Any writable CConsoleApplication properties can be configured here. return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'name'=>'My Console Application', // preloading 'log' component 'preload'=>array('log'), 'import'=>array( 'application.commands.*', ), ); I then re-ran the command and received the same results. $ ./yiic sayhello PHP Fatal error: Cannot redeclare class SayHello in /opt/local/www/html/myapp/protected/commands/SayHelloCommand.php on line 6 I'm using Yii 1.14, but I also tried it with 1.13 and 1.12. Thanks, Bart
  2. Also, The commands getxml and sayhello are both commands I created trying to figure out what was happening with the error. They have never worked either. Bart
  3. Larry, I created a new file FurryWhiteBunnyCommand.php with the following class: <?php class FurryWhiteBunny extends CConsoleCommand{ public function bunnies(){ echo "I am a bunny\n"; } } and I get the following: $ ./yiic furrywhitebunny bunnies PHP Fatal error: Cannot redeclare class FurryWhiteBunny in /opt/local/www/myapp/protected/commands/FurryWhiteBunnyCommand.php on line 7 That is the only error message. No other bunny files/classes on my system. If I type ./yiic help it show the command: $ ./yiic help Yii command runner (based on Yii v1.1.14) Usage: ./yiic <command-name> [parameters...] The following commands are available: - furrywhitebunny - getxml - message - migrate - sayhello - shell - webapp To see individual command help, use the following: ./yiic help <command-name> The rest of my Yii application seems to work great. That is why I'm stumped on this. Is there another way to autoload other than 'import'=>array( 'application.commands.*', ), in the console.php file? Thanks, Bart
  4. Larry et al., After working through several web applications I have started to work on a console application. To get started I created a simple class in in the commands folder called SayHelloConsole.php. When I try to run the application ./yiic SayHello I receive the following error: $ ./yiic sayhello PHP Fatal error: Cannot redeclare class SayHello in /var/www/myapp/protected/commands/SayHelloCommand.php on line 6 I have no other classes with the same name and I cannot track down where an additional import is taking place. I have tried removing: 'import'=>array( 'application.commands.*', ), from console.php, but then yiic fails because it cannot find the class file. I have googled and reviewed other reports of the problem, however I cannot find a solution to my problem. I have also tried the same command on two different Yii installations and still have the same issue. If I don't import 'application.commands' yiic cannot find the file and if I do, I get the 'cannot redeclare class' error. Any suggestions? Thanks, Bart My application is in the file SayHelloCommand.php <?php class SayHello extends CConsoleCommand{ public function run($args){ echo "Hello!\n"; } } My console configuration is console.php <?php return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'name'=>'Console', // preloading 'log' component // autoloading model and component classes 'import'=>array( 'application.commands.*', ), );
  • Create New...