• Как посчитать сумму чисел в столбце на Yii2?

    @profaller
    SomeModel::find()->sum('col_name');
    Ответ написан
    Комментировать
  • Почему Location в location'е утверждает, что его параметр находится вне родительской папки?

    Aecktann
    @Aecktann
    Вопервых:

    так нельзя:
    location /a/ {
      location /b/ {
        bla;
      }
    }


    а так можно:
    location /a/ {
      location /a/b/ {
        bla;
      }
    }
    .

    Во-вторых, директива alias не предназначена для реврайтов. Для реврайтов предназначена (внезапно! :) ) директива rewrite. С помощью алиасов и выделений можно перенаправить один статический файл на другой, но не перенаправить запрос на динамику.

    Вам нужно что-то наподобие следующего:

    server {
        listen 80;
    
        server_name localhost.dev;
    
        rewrite ^(.*).html$ index.php?id=block&block=$1 last;
    
        location /89262207055 {
            root /89262207055/;
        }
        location /89262207055/file {
            rewrite ^ /index.php?id=file&name= last;
        }
        location /index.php {
            bla;
        }
    }


    Читайте документацию, она _очень_ хорошая.
    Ответ написан
    7 комментариев
  • Почему не запускается cron скрипт?

    Indermove
    @Indermove Автор вопроса
    C#/.NET back-end разработчик
    Все нашел ответ на свой вопрос:

    1) Кронтаб нужно запускать так: sudo crontab -e - это нужно чтобы cron запускал скрипты из под root.
    2) Инструкции для cron должны быть такими. Нужно обязательно писать bash перед указанием пути к скрипту. После указания пути к скрипту дописать >/dev/null 2>&1
    Пример:
    0 1 * * * bash /bin/bash /usr/share/script.sh >/dev/null 2>&1
    0 2 * * * bash /bin/bash /usr/share/script2.sh >/dev/null 2>&1
    * * * * 1 bash /bin/bash /usr/share/script3.sh >/dev/null 2>&1

    #!/bin/bash
    rsync --archive /home/share --delete /mnt/backup/neon_backup
    rsync --archive /var/www/html/vtgr --delete /mnt/backup/neon_backup

    3) Сами скрипты действительно должны быть лишены sudo, так как и так запускаются из под пользователя root.
    Пример:
    #!/bin/bash
    
    cd /mnt/backup/neon_backup/MySQL_backup
    mysqldump -u root -pnppwd --all-databases > mysql_backup.sql
    set > /tmp/script-environment
    tar cvjf back_mysql.tar.bz2 mysql_backup.sql
    Ответ написан
    Комментировать
  • Почему не запускается скрипт через crontab -e от пользователя?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В задании крона нельзя указать пользователя. Там может быть только командная строка. Слово agent интерпретируется как команда, которой нет.

    Кроме того, будьте готовы, что при таком запуске скрипта значение $PATH будет отличаться от того, что вы видите в интерактивной сессии, и нужно будет дополнительно сделать . /etc/profile или . ~/.bash_profile.
    Ответ написан
    1 комментарий
  • Почему не запускается скрипт через crontab -e от пользователя?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    В crontab -e пользователя указывать не нужно. Просто
    * * * * * command

    После 2> пробел уберите. Если собираетесь через -e делать, то добавьте пользователя в /etc/cron.allow

    Потом сделайте chmod +x /home/agent/rails_projects/project/rake_script.sh и в крон пишите так:
    # если в crontab -e, то
    * * * * * /home/agent/rails_projects/project/rake_script.sh 2>home/agent/errors
    
    # если в /etc/cron.d/sth или /etc/crontab, то
    * * * * * agent /home/agent/rails_projects/project/rake_script.sh 2>home/agent/errors
    Ответ написан
    2 комментария
  • Как ответить json'ом?

    Shutik
    @Shutik
    Погромист халявщик
    ммм ... указать этот самый header() в ответе ?
    header('Content-Type: application/json');
    Ответ написан
    Комментировать
  • Как в Yii2 записать ip адрес пользователя в БД при регистрации?

    qonand
    @qonand
    Software Engineer
    Получить IP адрес пользователя вы можете с объекта Request приложения, например:
    Yii::$app->request->userIP
    ну а дальше записываете его в свою модель пользователей, сохраняете и т.п.
    Ответ написан
    Комментировать
  • Как отправить HTTP запрос методом POST на URL через PHP?

    Tyranron
    @Tyranron
    Действительно, за время, которое потратили на создание вопроса, Вы могли без проблем найти интересующую Вас информацию в любом поисковике.

    Но раз вопрос уже задан, то должен быть и ответ(ы).
    Собственно, @OnYourLips дал ссылку на хороший фреймворк, но если нет смысла тащить в проект/скрипт целый фреймворк ради одного запроса, к примеру, то логичнее воспользоваться упомянутым CURL. В Вашем случае сценарий использования CURL будет выглядеть примерно следующим образом:
    $myCurl = curl_init();
    curl_setopt_array($myCurl, array(
        CURLOPT_URL => 'http://target.site.com/form.php',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query(array(/*здесь массив параметров запроса*/))
    ));
    $response = curl_exec($myCurl);
    curl_close($myCurl);
    
    echo "Ответ на Ваш запрос: ".$response;

    Если надо передать при этом ещё и файлы, или обратиться по https, или ещё чего Вам понадобится - добро пожаловать в документацию:
    http://php.net/manual/ru/book.curl.php
    Советую обратиться к документации в любом случае, дабы ознакомиться со всеми возможными нюансами, а также понять и выбрать то, что конкретно Вам потребуется для решения Вашей задачи.
    Ответ написан
    3 комментария
  • Формы yii2. Как обновит данные в БД используя модель?

    supervaleha
    @supervaleha
    Web-development
    Ох, не верится мне, что в Гугле Вы подробно искали)) Но, дело житейское.
    Идея:
    1. В контроллере загружаем данные по пользователю в объект модели. Например:
    $model = User::findOne( $someUserId ) ;

    2. Передаем этот объект во вью, где при помощи виджета выводим список всех нужных полей.
    <?php 
    $form = ActiveForm::begin([
        'id'                          =>    'about-form',
        'method'                      =>    'post',
    ]); ?>
    <?=  $form->field($model, 'name_first') ?>
    <?=  $form->field($model, 'name_middle')?>
    <button class="btn btn-lg btn-primary" type="submit">OK</button>
    <?php ActiveForm::end(); ?>


    3. Action формы с методом POST направляем на тот же контроллер и в нем проверяем, каким методом пришел запрос, проводим валидации и т.д. - после чего сохраняем:
    if( \Yii::$app->getRequest()->isPost ){
                if( $model->load( \Yii::$app->request->post() ) && $model->validate() ){
                    $model->save( false ) ;
                 }
            }


    Таким образом типовой метод в контроллере может иметь вид:
    public function actionIndex()
        {
            // загружаем данные по ID
            $model = \app\models\User::findOne( $this->userId );
            // если POST - значит идет сохранение с формы
            if( \Yii::$app->getRequest()->isPost ){
                // если аттрибуты загрузились и отвалидировались - можно сохранять
                if( $model->load( \Yii::$app->request->post() ) && $model->validate() ){
                    $model->save( false ); 
                }
            }
            // передаем объект во вью (если GET - исходные, если POST - обновленные)
            return $this->render('index', [
                'model'     =>  $model
            ]);
        }
    Ответ написан
    2 комментария
  • Так ли нужен ИП или ООО?

    @yares
    Дело в том, что вы планируете извлекать прибыль.
    1. Если вы хотите попробовать, (1,2,3, 4 раза получить прибыль), то у вас формально возникает только одна обязанность: оплатить с дохода НДФЛ 13% как гражданину РФ, который получает прибыль.
    2. Если вы будете бесконечно пробовать, то есть вариант нарваться на КоАП РФ, Статья 14.1. Осуществление предпринимательской деятельности без государственной регистрации или без специального разрешения (лицензии) - от 500 до 2000 руб. В принципе, немного.
    Обратите внимание на формулировку из налогового кодекса (тезисно): "предпринимательство = систематическое извлечение прибыли.
    Ну то есть, за 1 раз и за 3 раза извлечения прибыли вас вряд ли будут привлекать

    Но если ваша деятельность приносит крупный доход (2250000 руб) или особо крупный (9000000 руб), либо причинен вред государству или гражданам на эти суммы, тогда 171 УК РФ (штраф, без лишения свободы)
    А ежели вы вдруг раскаетесь и возместите вред, то на основании 76.1 УК РФ, вас освободят от уголовной ответственности.

    3. Проще открыть ООО, с уставным капиталом в виде имущества на 10 тыс, перейти на УСНО 6% и отвечать по всем обязательствам своим имуществом фирмы (старым креслом и системным блоком Пентиум1, оцененным вами самостоятельно стоимостью в 10 тыс руб и внесенным в уставный капитал как имущество)
    А вот если вы откроете ИП, то по всем претензиям контрагентов и налоговым пеням приставы будут ходить к вам домой и кошмарить ваших близких. Так как ИП отвечает своим личным имуществом. И просто так по-английски уйти, как в случае с ООО у вас не получится.
    Ну а если ООО, то приставы будут ходить по месту вашей гос регистрации. Да и как к учредителю к вам крайне сложно будет предъявить претензию, ибо на основании 14-ФЗ об ООО, учредитель не отвечает по долгам компании, как и наоборот

    И кстати, если вас нанимает организация (ООО), то ООО в данном случае будет налоговым агентом в отношении вас и будет обязана исчислить и удержать с вас НДФЛ. А в случае невозможности оного - стукануть в налоговую, что бы с вас этот НДФЛ удержали.
    Ответ написан
    17 комментариев
  • Что за ошибка "The use statement with non-compound name 'Yii' has no effect"?

    qonand
    @qonand
    Software Engineer
    Ошибка возникает из за того что в файле с представлением по умолчанию подключен Yii, а Вы его повторно пытаетесь подключить. Подразумеваю что в остальных местах где у Вас появляется такая ошибка - аналогичная ситуация
    Ответ написан
    1 комментарий
  • Как правильно вносить изменения в GIT (BitBucket + Source Tree)?

    27cm
    @27cm
    TODO: Написать статус
    Пересмотрел ряд видетуториалов...

    Вот главная ошибка. Чтобы действительно хорошо понимать, что вы делаете и зачем, нужно читать:
    1. Git Book / Git для профессионального программиста
    2. Документацию к BitBucket

    1) Нужно ли было мне в начале вообще создавать этот Fork? И для чего он вообще нужен?

    Если у вас есть права вносить изменения в оригинальный репозиторий, то fork не обязателен.

    2) Как мне отправить правки именно главному участнику?

    Pull Request

    3) Если я хочу периодически вносить такие правки, мне надо постоянно заново качать репозиторий? Или раз скачал и он хранится и как-то обновляется (или надо его обновлять?). Что бы не пропустить новые правки от другого человека, и не залить свои поверх его.

    Using the Bitbucket to sync your fork to the origi...
    Ответ написан
    1 комментарий
  • Как установить yii 2 на openserver?

    NoizeMC
    @NoizeMC
    junior PHP (Yii2) разработчик
    Понимаю, что вопрос был задан давно, но поиск все еще приводит на эту страницу. Сегодня начал изучать yii2 и столкнулся с той же проблемой. Возможно, кому-то поможет.

    Решение же оказалось очень простым.
    1. В Openserver уже встроен Composer, его устанавливать не нужно
    2. Из первого пункта следует, что для установки yii нужно использовать только команду composer

    Пример:
    В официальном руководстве для установки yii2 нужно сделать:
    php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"

    в консоли openserver вам нужно набрать ТОЛЬКО это:
    composer global require "fxp/composer-asset-plugin:~1.1.1"

    Дальше вы набираете соответственно:
    composer create-project yiisoft/yii2-app-basic basic 2.0.9

    Те php composer.phar меняется на composer и все работает

    PS при выполнении composer create-project yiisoft/yii2-app-basic basic 2.0.9 лучше перейти в корневую папку вашего сайта или указать адрес при создании, например так:
    composer create-project yiisoft/yii2-app-basic domains/internet-shop/basic 2.0.9

    При это создатся папка internet-shop в стандартном Openserver хранилище domains, где будет размещен базовый yii2. Имя basic конечно тоже можно поменять.

    Для того, чтобы настроить Openserver для запуска проекта на yii2 в браузере вида shop.ru вместо shop.ru/basic/web
    советую обратиться к этой статье, тут два простых решения
    Ответ написан
    Комментировать
  • Что должен знать middle PHP разработчик?

    bboytiwst
    @bboytiwst
    Очень интересную вакансию получил на днях, на мой взгляд она в какой то мере описывает то, что должен знать мидл.
    - писать хороший код на PHP от 2 лет;
    - знаешь для чего нужны интерфейсы в PHP
    - у тебя есть опыт проектирования MySQL, понимание механизма оптимизации реляционных баз данных этого типа;
    - используешь концепции ООП, а не пишешь лапшекод;
    - знаешь основные паттерны проектирования
    - умеешь разбираться в чужом коде;
    - знаешь о замыкании в JavaScript и как красиво написать рабочий код;
    - применял AJAX и периодически его используешь;
    - знаешь как писать юнит-тесты и когда их писать целесообразно;
    - знаешь о dependecy injection и почему он нужен для повторного использования, масштабирования и тестируемости;
    - понимаешь, чем ActiveRecord со связями отличается от традиционного, фаулеровского, ActiveRecord


    IMHO то что надо
    1. знать большинство отличий/нововведений 2-3 последних мажорных версия PHP (и уметь их правильно использовтаь)
    2. знать один из фреймворков (ZF2, Symfony2, Laravel4/5) на уровне полного понимания внутренней работы фреймворка (на каких паттернах построена та или иная часть системы, почему именно на них, как это все взаимодействует и т.д)
    3. знать как работают реляционные СУБД т.е понимание JOIN'ов не только, что куда лепить, а и как это происходит внутри, ну и с остальными функциями так же
    4. ну и в конце то концов разобраться с SPL, что бы не было ситуаций как на PHP UK Conf.
    5. JS - понимать как там все внутри крутиться, вертится. Желательно знать еще какой то фреймворк (Angular, backbone, etc)
    6. HTML, CSS - по вкусу (не считаю, что php программист должен быть крутым верстальщиком, но одно другому не мешает и если нравится то это только плюс будет)
    7. Знать English, что бы стыдно на митинге не было
    8. быть адекватным, вменяемым человеком
    Ответ написан
    6 комментариев
  • Правильная проверка на пустоту переменной?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Читая ответы, хочется плакать.

    В кои-то веки нашелся автор, который осилил корректно сформулировать свою проблему: в дополнение к стандартной проверке РНР, ему надо отбрасывать и нули тоже. Казалось бы - прочти и сделай по заказанному.

    Но нет. Один герой все бубнит про "это исходит от Вашей задачи" (при том что задача описана!) и дальше пишет бессмысленный код. Второй, по своей стародавней привычке, просто с умным видом пишет бессмыслицу. С третьего взятки гладки - типичное похапешное создание, пишет код не приходя в сознание.

    И при этом никто (включая автора) почему-то не догадался тупо перечислить условия задачи:
    !($var || $var === 0 || $var === 0.0 ||$var === '0')) ...

    Не говоря уже о том, что подумав, можно сообразить, что автора интересует длина строки. И написать код, который корректно, но не столь императивно следует всем условиям задачи:
    function is_empty(&$var)
    {
        return !($var || (is_scalar($var) && strlen($var)));
    }

    Самое печальное, что писать это всё - пустая трата времени.
    Серая похапешнаая масса так и останется серой массой, не понимающей языка, на котором она пишет, но всегда готовой дать совет ближнему.
    Ответ написан
    5 комментариев
  • Правильная проверка на пустоту переменной?

    KorsaR-ZN
    @KorsaR-ZN
    Начну с различия между isset и empty.

    isset - проверяет на существование переменной или индекса в массиве, т.е она будет ВСЕГДА true, если значение отлично от NULL, именно от константы null, т.е '', 0, "\0" и т.д, будет считаться существующей переменой, false будет только при присвоение ей null или unset($var), во всех остальных true

    empty - проверят именно на пустоту переменной, т.е возвращает true если переменная является пустой и false в противоположном случаи.

    В PHP пустотой считаются следующие значения:
    • ""
    • 0
    • 0.0
    • "0"
    • null
    • false
    • array() (пустой массив)
    • $var; (переменная объявлена, но не имеет значения)


    Что касается проверки на пустоту и как ее правильно делать, то это исходит от Вашей задачи, и что должно для Вас является пустотой, но в большинстве случаем подойдет такая проверка:
    if(isset($var) && $var !== '')  {
    // $var не null и не  ''.
    }

    Еще больше поможет разобраться в сравнение типов, это таблица сравнение типов PHP
    Ответ написан
  • Как сделать кнопку наверх без прокрутки?

    kompi
    @kompi
    nullstack devoops
    "Господи, нагородили":
    window.scroll(0,0);
    Для ленивых:
    <span onclick="window.scroll(0,0);">^^^^</span>
    Ответ написан
    1 комментарий
  • Блокировка любого трафика не через VPN

    @Rulin
    Элементарно можно сделать без всяких фаирволов (я исхожу из того что интернет у вас раздается через роутер, и на компьютере указан статический локальный адрес), в настройках сетевого интерфейса убираем все данные кроме ip адреса компьютера и маски сети, т.е. дефолтный шлюз должен отсутствовать и dns не должно быть, дальше необходимо прописать роутинг только до сервера vpn, комманду привожу из линукса (т.к. на венде подобные вещи неприятно делать), но ее легко можно адаптировать под винду т.к. там тоже есть комманде route. Сама комманда выглядит так: route add -host <ip адрес vpn сервера в интернете> gw <ip адрес локального роутера который раздает интернет (то что было указанно в дефолтном шлюзе)>

    Все, в итоге мы имеем компьютер который подключен к локальной сети и не знает ничего про интернет, но знает где находиться vpn сервер. Далее подключаемся по vpn и получаем интернет.

    p.s.
    Как доберусь до компа с виндой напишу точно как команда выглядит на винде.
    Ответ написан