Closed uwascan closed 9 years ago
This is known, yeh. Looks like windows isn't supported.
I commented out the part the method 'buildCommand' in Illuminate\Console\Scheduling\Event.php as shown below /* * Build the comand string. * @return string */ public function buildCommand() { $command = $this->command; //.' > '.$this->output.' 2>&1 &'; return $this->user ? 'sudo -u '.$this->user.' '.$command : $command; }
my scheduled jobs are running now. this is a terrible thing to do I know, it will remain so until I come across a better solution.
Is there any best practice on how to extend or replace Illuminate\Console\Scheduling\Event.php?
@GrahamCampbell your response is not good enough, are you saying windows users should avoid Laravel?
@uwascan you're right on your way to make a pull request to Laravel however manipulation is a surplus
btw why running PHP on windows servers these days?
From the link posted by @crynobone, I was able to make it work on windows using php artisan schedule:run > NUL 2>&1
btw why running PHP on windows servers these days?
Someone/team could consider http://azure.microsoft.com/en-us/, unless Laravel team has decided not to support Windows.
@neomerx my client only has windows based infrastructure. I think PHP support on windows is not as bad as it is portrayed to be. What would you do if you are hired by a windows shop to build a php app? reject the offer or force linux? I find Linux very good though, I am still wrapping my head around it.
@uwascan Cos not unless you're a hardcore windows hater :) However if a company rents servers or cloud infrastructure (which is very common these days for internet web projects) typically it's *nix based. Thus worth asking.
Anyway having your pull request with something like php_uname('s') === 'WINNT' ? ... : ...;
would be :+1:
@uwascan FYI one of the 'windows as a PHP server' sad stories
The project I am working is used internally on a private LAN. I submitted a pull request a few hours ago. My very first. https://github.com/laravel/framework/pull/7887
Another simple way to make this work on windows without changing Laravel code is to append the following to your sheduler code
->sendOutputTo('NUL')
Example
$schedule->command('inspire')->cron('*/1 * * * * *')->sendOutputTo('NUL');
the code below works on windows when sending output to a file.
$schedule->command('inspire')
->cron('*/1 * * * * *')->sendOutputTo(storage_path('logs/output.log'));
This is what I am currently using and all is good so far. I think this should be added to the docs.
Thank you @uwascan - it's 11:50pm, and that's just helped me with local testing. Works perfectly on windows.
Why is this issue closed, still not fixed. I am just removing the "2>&1 &" string from the Laravel code but it's not a good solution. And the modification to the Laravel code should not be so hard. Just put a conditional if the server OS is windows do not append that string. I prefer linux servers, always, but you cannot ask to a client to change all his infrastructure.
I found this solution on laracast and works pretty well: https://laracasts.com/discuss/channels/general-discussion/running-schedulerun-on-windows
The solution on https://laracasts.com/discuss/channels/general-discussion/running-schedulerun-on-windows does not work for me: nothings happens. I tried uwascan solution. In taskplanner, in field Program/script, i put: php In field Add arguments, i put: D:\phpsites\touristpreview\laravel\artisan schedule:run > NUL 2>&1 In log files i then see:
[2015-11-25 16:00:19] local.ERROR: exception 'RuntimeException' with message 'Too many arguments.' in D:\phpsites\touristpreview\laravel\vendor\symfony\console\Input\ArgvInput.php:177 Stack trace:
Anybody please have a solution?
I'm actually using Windows 10, and it works if the batch file is written like this :
php artisan schedule:run 1>> NUL 2>&1
also redirectin ghte output to some sort of log works fine
php artisan schedule:run >> schedule_logs.log
@DarioCorno How did you create the batch file and where did you put that?
for me I have done the following way ..But cron doesn't work so far:
I have created a batch file with name cron.bat ( scheduler array I want to send email to list of user) and put it inside of my blog (project name)
I wrote the following line inside of batch file
php artisan schedule:run 1>> NUL 2>&1
The I have run the following command in my cmd to create the task in schedule:
schtasks /create /sc minute /mo 1 /tn "PHP Cron Job" /tr C:\xampp\htdocs\blog\cron.bat
It said PHP cron job crated successfully.
But nothing happened it every minute... Can you please explain how did you do it?
hey everyone! i just solved this on my server! try using the absolute path to php!! /usr/local/bin/php /path/to/artisan schedule:run >> /dev/null 2>&1
You tried for Windows?
and run it.
@DarioCorno My .bat file looks like this
cd c:\Users\User\Desktop\alerts C:\wamp64\bin\php\php7.0.10\php.exe artisan schedule:run 1>> NUL 2>&1
The schedule function in the Kernel.php looks like this:
protected function schedule(Schedule $schedule) { // $schedule->command('inspire') // ->hourly(); $schedule->command('custome:command')->everyMinute(); }
And the actual task that will be called looks like this
public function handle() { echo 'Hello'; }
It doesn't give any output. I should automatically print "Hello" after a minute right? But it doesn't. Also just to confirm this output will be shown in the cmd prompt under my laravel project directory right?
2024 😂
I am trying out the new command scheduling feature of Laravel 5 on windows 7 using a windows based cron service [http://www.intelliadmin.com/index.php/2011/11/cron-service-for-windows/]. When I discovered that my commands where not running I ran php artisan schedule:run manually on a console and got the following error: Running scheduled command: C:\Program Files (x86)\PHP\v5.6\php.exe artisan roman:inspire > /dev/null 2>&1 & The system cannot find the path specified. I think the problem is with '> /dev/null 2>&1 &' appended to the command. Is it possible for laravel not to append '> /dev/null 2>&1 &' when running on windows, if not what do you suggest I do. I have an up coming project that depends on the command scheduling feature of Laravel 5. Any guidiance will be appreciated.