Sunday, January 19, 2014

Re: Console & Shells on sub-domains

Running the console from within the specific site app directory (/var/www/vhosts/mydomain.com/site1/app) looks like the right thing to do, however, because it's picking up a different site at run time, it would go looking for the include_path setting in the php.ini. It looks like the path for site2 could be hardcoded in that setting.  

I'm not sure that putting /usr/share/cakephp2 on the PATH is desired, because CakePHP 2.x installations have Console/cake under the app directory anyway, and would rely on the include_path to pick up the correct lib directory for CakePHP Core.

As a side note, in CakePHP 3, each CakePHP application is expected to have it's own installation of CakePHP Core installed via composer, possibly existing under the vendors directory. With a CakePHP 2.x installation using composer, the CakePHP Core, using a pear package, would exist under app/Vendor/pear-pear.cakephp.org, and composer would take care of setting up the include_path via the autoload.php in app/Vendor.  If you're starting out with a new multi-domain set up, I would strong recommend using composer with CakePHP 2.x, so you're used to it if/when you should upgrade to CakePHP 3.  You will also relieve yourself of the burden of having to upgrade all the sites at the same time, should you need to upgrade CakePHP versions for minor releases.

Regards
Reuben Helms

On Sunday, 19 January 2014 09:39:48 UTC+10, April DeRossett wrote:
I don't know why I can't wrap my head around this.

Situation:
I have multiple cake applications located as subdomains with my domain being organized as follows:

I have installed my CakePHP Console under /usr/share/cakephp2.  I modified my .bash_profile to include this path for export PATH.  When I run cake from any location I get the "Welcome to CakePHP" message.

I have created a HelloShell.php following the instruction on the Cake website and placed it in /var/www/vhosts/mydomain.com/site1/app/Console/Command.  then I run the following:

# cd /site1/app

# Console/cake hello

and get the following:

  • PHP Warning:  strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Denver' for 'MST/-7.0/no DST' instead in /var/www/vhosts/mydomain.com/site2/lib/Cake/Cache/CacheEngine.php on line 60
  • Error: Shell class HelloShell could not be found.
    #0 /var/www/vhosts/mydomain.com/site2/lib/Cake/Console/ShellDispatcher.php(190): ShellDispatcher->_getShell('ba')
    #1 /var/www/vhosts/mydomain.com/site2/lib/Cake/Console/ShellDispatcher.php(68): ShellDispatcher->dispatch()
    #2 /var/www/vhosts/mydomain.com/site2/lib/Cake/Console/cake.php(51): ShellDispatcher::run(Array)
    #3 {main}

Question:

  1. Why is the ShellDispatcher looking in the site2 directory when I am running from the site1 app?
  2. If I place the same HelloShell.php in the /var/www/vhosts/mydomain.com/site2/app/Console/Command -- It runs without issue. 


Goal: My goal is to be able to run CRON jobs using shells from each of the subdomains. 

Any help you can give will be greatly appreciated. 

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: