Задать вопрос
deleted-mezhevikin
@deleted-mezhevikin

Как запускать команды по расписанию в laravel из под рута?

Есть проект на laravel5, в нем по расписанию в Kernel.php запускается команда которая пишет файл в папку storage:

$schedule->call(function()
{
      \File::put(storage_path('test.txt'), 'tut text tut text tut text');

 })->everyMinute();


Проблема в том что файл создается редонли, если этот же кусок кода вызвать через контроллер то файл создается ридрайт.

Команду запускаю через маковский launchd. Крон в последних версиях макос не работает.

Код launchd:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.the-website.cron</string>
        <key>ProgramArguments</key>
        <array>
                <string>php</string>
                <string>/Users/name/Desktop/project/artisan</string>
                <string>schedule:run</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>60</integer>
</dict>
</plist>


Использую Mac os 10.10.5. Mamp PRO 3.4

Сделать папку стораджа 777 не помогает, все последующии файлы все равно будут сохранены как ридонли
chmod -R 777 storage
  • Вопрос задан
  • 421 просмотр
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Как на счет все же решить основную проблему - запускать и php-cli из под того же пользователя, из под которого у вас крутится пых под web.

И да, запускать такие вещи из под рута это плохо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы