Reputation: 3822
I looking for setup a multi-environment project using Laravel3 but I dont understand the command to set the environment.
I see here: http://laravel.com/docs/artisan/commands The command is:
php artisan foo --env=local
I already used artisan and bob with success, what I can't undertand the foo, I try to change to my project name but always the same output: "Sorry, I can't find that task."
If I try: php artisan --env=local
That will return: "You forgot to provide the task name."
Anybody can help? Thanks for your time.
[edit] With the answers now I can understand better and improve my question:
I have a project with those folders created: http://d.pr/i/5nZS With that in mind, I need to set my local env as development and production as production. So, I can do that with any variation of the command "php artisan --env=local" or I need to add on my public/.htaccess "SetEnv LARAVEL_ENV development"?
Thanks again.
Upvotes: 9
Views: 27291
Reputation: 1
I'd recommend setting up a name-based virtual host for your web application first:
<VirtualHost *:80>
ServerAdmin postmaster@localhost
DocumentRoot "__PATH TO YOUR SERVER ROOT___/project/public/"
ServerName project.dev
ErrorLog "logs/project-error.log"
CustomLog "logs/project-access.log" combined
</VirtualHost>
Then add project.dev to your hosts file /private/etc/hosts
as follows:
127.0.0.1 project.dev
Don't forget to flush the DNS cache afterwards:
$ dscacheutil -flushcache
Then amend the $environments array found in [project root]/path.php
(the applications/path.php file you mentioned does not exist) back to what it was. The original *.dev wildcard will pick up the .dev at the end of the url you provided.
$environments = array(
'local' => array('http://localhost*', '*.dev'),
);
Then create a directory within applications/config/
called local
, place within the new directory a file called application.php
. The configuration given in this file will override the configuration set by the corresponding configuration files and settings/values given in the parent of the local
directory you have created.
Upvotes: 0
Reputation: 3822
Here, how I solved my question:
First I didn't need the command php artisan migrate --env=local
, I just need set on my virtualhost: SetEnv LARAVEL_ENV development
.
Second, as William Cahill-Manley say, I need to work on application/paths.php, the $environments. I've used it before but the wrong way. In my case, I solve with that:
$environments = array(
'development' => array('http://localhost/project*', '*project/*'),
'production' => array('http://project.com', 'http://*.project.com')
);
My problem was because my code before was like that:
$environments = array(
'development' => array('http://localhost/project*', '*project*'),
'production' => array('http://project.com', 'http://*.project.com')
);
And because the second element of development array, in the production server always will be in development.
Thats because the url on development be http://project/
and on production be http://project.com/
or http://user.project.com/
See, the project will force in all envonriments be development by the asterisk/wildcard.
Upvotes: 1
Reputation: 514
Foo is a task name , try to create this file in the task folder, there are some other task which is predefine for example migration etc.
<?php
class foo_task {
public function run(){
echo 'this is foo';
}
}
?>
then when you run the command,it will run the code inside the run function.
php artisan foo --env=local
Upvotes: 0
Reputation: 2405
"Foo" is whatever command you want to run. E.g. for migrations:
php artisan migrate --env=local
Another thing you can do is add your computers hostname to this array
For example, if my local computer name is 'Effinity.local' I could do
$environments = array(
'local' => array('http://localhost*', 'Effinity.local'),
);
Then you do not need to specify the environment, just:
php artisan migrate
Hope that helps.
Upvotes: 14