Закрыть
Скидки в Webasyst 25–29 ноября 2021

Как получить адрес хоста при запуске через крон

maxior

Запускаю скрипт кроном, вывожу результат выполнения getrooturl(true).

в бэкенде все хорошо, вижу адрес в формате http://gggg.ru


а при запуске через крон выводит http://var/www/...ggg.ru


как мне получить нормальный адрес при запуске скрипта через крон??

15 апреля 2016
  • Николай Иванов 15 апреля 2016 03:06

    Если коротко, то никак. В cli нет имени хоста.
    Хотя вы можете приделать свои подпорки - тут вариантов много.

  • Фреймворк знает про URLы только когда запускается в контексте веб-сервера. В CLI веб-сервера нет. Можно вообще создать установку без веб-морды, только CLI.

    Но варианты есть.

    // Можно получить URL админки, используя сохранённый URL из настроек инсталлера.
    // Если юзер сам дурак и вписал туда какую-нибудь чушь, то это сломается.
    $root_url = trim(wa()->getSetting('url', '', 'webasyst'), '/').'/';
    $backend_url = $root_url.wa()->getConfig()->getBackendUrl().'/';
    
    // Можно взять URL из роутинга.
    // Если у установки нет фронтенда, это сломается.
    $domains = wa()->getRouting()->getDomains();
    $root_url = 'http://'.trim(reset($domains), '/').'/';
    $backend_url = $root_url.wa()->getConfig()->getBackendUrl().'/';
    
    // Можно получить URL админки, куда последний раз заходил конкретный юзер бекенда.
    // Удобно при отправке писем, когда известен контакт юзера.
    // Если никогда не заходил, это вернёт пустоту.
    $c = new waContact(100500);
    $var = $c->getSettings('webasyst', 'backend_url');


Чтобы добавить комментарий, зарегистрируйтесь или войдите