Задать вопрос
  • Ошибка 404 - почему не работает роутинг/контроллер/шаблон?

    logpol32
    @logpol32 Автор вопроса
    Долго искал в гугле, пробовал разные варианты и вот что сработало.
    Нужно было:

    1) в корень сайта положить файл .htaccess с содержимым:
    Options -Indexes
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L,QSA]


    2) в папку public положить файл .htaccess с содержимым:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]


    Работает. Открывает нужные страницы.

    PS
    Но я всё ещё не понимаю правильно ли это (так вообще делают? в других системах и фреймворках такого не встречал) и почему это не было сделано автоматически, при установке symfony, пакетов и т.д.?
    Ответ написан
    4 комментария
  • Как заставить работать вместе react с laravel в openserver 6?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    export default defineConfig({
        // ...
        server : {
            cors: true,
        },
    });
    Ответ написан
    1 комментарий
  • Есть web-сервер на php или nodejs который поддерживает работу с .htaccess?

    @bodial
    не совсем корректный вопрос как указали выше. Но вот для него решение на докер: контейнер с апачем и пробросом папки под корень сервера. в www создаете index файл и .htaccess
    docker-compose:
    services:
      web:
        build: .docker/web
        volumes:
          - ./www:/var/www/html
        ports:
          - 3000:80


    dockerfile:
    # Use an official PHP runtime
    FROM php:8.2-apache
    
    # Установка необходимых пакетов и PHP-расширений
    RUN apt-get update && apt-get install -y \
        zip \
        unzip \
        libpng-dev \
        libjpeg-dev \
        libfreetype6-dev \
        libzip-dev \
        cron \
        nano \
        && docker-php-ext-install zip gd mysqli pdo pdo_mysql
    
    # Установка Xdebug
    RUN pecl install xdebug && docker-php-ext-enable xdebug
    
    # Установка Composer
    RUN curl -sS https://getcomposer.org/installer | php -- \
        --install-dir=/usr/local/bin --filename=composer
    
    # Копирование конфигов
    COPY php.ini /usr/local/etc/php/conf.d/php.ini
    COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
    COPY sites.conf /etc/apache2/sites-available/000-default.conf
    
    # Указание рабочей директории
    WORKDIR /var/www/html/
    
    # Изменение прав доступа
    RUN chown -R www-data:www-data /var/www/html

    можете убрать модули которые не нужны

    sites.conf
    <VirtualHost *:80>
        DocumentRoot /var/www/html
        <Directory /var/www/html>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    Ответ написан
    Комментировать
  • Как правильно вернуть данные из рекурсивной функции?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Здесь не нужна рекурсия. Чтобы дойти до корня, достаточно использовать примитивный цикл.
    public function getRootCategory($id) {
        do {
            $data = Category::find()
                    ->select(['name', 'parent_id'])
                    ->where(['id', $id]);
                    ->first();
            $id = $data['parent_id'];
        } while ($id > 0);
        return $data['name'];
    }
    Ответ написан
    5 комментариев
  • Как в windows 11 посмотреть какой процесс грузит видеокарту?

    @lolpraym
    Привет! такая же ситуация сейчас была, надо нажать правой кнопкой мыши на Имя, и потом поставить галочку в GPU.
    Ответ написан
    2 комментария
  • Macbook air M4 24/32GB 512/1TB или Macbook Pro M4 24GB 512/1TB?

    pewpew
    @pewpew
    У меня бук M4 Pro 13" на проце M4 (не про), 16/512, до этого был M3 Pro 13" на проце M3 (тоже не про) 16/1Tb, а до этого был M2 Pro на проце M2 (всё так же не про) (в старой будке) 8/256.
    Занимаюсь веб разработкой, в основном бэк + всякие пет проекты, немного геймдев, немного поигрываю в игры.
    И вот что я скажу.
    Прыжок с M2 на M3 был оправдан. Тем более что я по неопытности повёлся на маркетинг и взял бук с мерзким тачбаром. Для нас, программистов это как отрубить пару пальцев. Все F-кнопки сразу перестают быть удобными и тактильно не ощущаются. Что касается производительности, то она сильно не проседала. Но оперативы всё же не хватало. Перейдя на M3 Pro я вздохнул свободно. 1Tb прям норм. Ну и 16 гигов памяти - база. Так получилось, что была возможность перескочить на M4, но немного потерять в SSD. И да, 512 гигов уже едва хватает. Приходится пользоваться внешним накопителем.
    По поводу производительности - не заметил что прямо сильно что-то поменялось. Но разве что игры стали идти лучше. А кулер включается только в Baldur's Gate. В остальное вермя я его не слышу. Появился +1 USB порт. Это удобно, но не критично.
    Дома приобрёл себе ещё макмини на M4 Pro 24/512. И он прям тащит. Не знаю, пока не было задач, где бы он проседал. Зверь машина.

    Резюмируя - можно и air брать, главное по оперативной памяти не меньше 16, а лучше 24. Не сейчас, так потом понадобится. И да, докеры те же жрут её хорошо. Не упрёшься, но лучше больше. SSD от 512, но как варик - внешний накопитель спасёт. Вот у меня на 2 Тб и я уже привык. А про экрану и разъёмам - тут уже начинаются хотелки. Экран и у эйра хорош. У меня проха, но я не вижу прям чего-то очень особенного в экране. Маки не делают плохого. Что там ещё - звук у прошки типа чуть лучше, но ты же в наушниках будешь большую часть времени, бери кстати айрподсы прохи, очень прям зашли. По экранам - ну будешь иногда подрубать, но нафига тебе больше одного внешнего моника? Если возникает такой кейс, подумай лучше о макмини для рабочего стола.
    Ответ написан
  • Как создать docker-контейнер в проекте на Yii2, в котором бы работал cron?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Почитать "Запуск cron внутри Docker-контейнера" и разочароваться.

    Почитать про "supercronic" воодушевиться и добавить supercronic в образ с backend, затем из образа backend запустить контейнер, собственно, с backend и из этого же образа запустить supercronic в соседнем контейнере, в котором и будет выполняться целевая команда по расписанию заданному в crontab
    Ответ написан
    1 комментарий
  • Как создать docker-контейнер в проекте на Yii2, в котором бы работал cron?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Как вариант настроить кронтаб в хостовой системе, который в контейнере докера будет дергать команду.
    Что-то вроде:

    docker exec -i <backend docker container> bash -c "php yii cron/midnight"
    Ответ написан
    5 комментариев
  • Как обойти ограничение максимального размера поля в 255 символов?

    @Nolan81
    программист
    Нужно писать новую миграцию, в которой через ALTER TABLE сменить определение поля. И запустить ее.
    Ответ написан
    2 комментария
  • Как в ubuntu смотреть, какой пользователь что делал?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    zver - наш воображаемый пользователь-зверь.

    1. Какой пользователь в какое время заходил?

    - last - история входов.
    - last zver - история входов зверя.
    - lastb zver - история неудачных входов зверя.
    - last zver | grep "Jan 21" - история входов зверя за 21 января сего года.
    - last -s -7days zver - история входов зверя за последние 7 дней.
    - last -s 2025-01-15 -t 2025-01-21 zver - история входов зверя за 15-21 января 2025 года.

    2. Действия того или иного пользователя?

    - cat /home/zver/.bash_history - история команд зверя.
    - who -u - показывает активных пользователей (терминалы и время входа).
    - ps -u zver - показывает список активных процессов зверя.
    - sudo iotop -u zver - мониторинг ввода вывода пользователя зверя (в режиме реального времени).
    - sudo iftop -f "src user zver" - показывает сетевой трафик зверя.
    - sudo tail -f /var/log/syslog | grep zver - просмотр действий зверя в реальном времени.
    - sudo journalctl -f | grep zver - отслеживание действий зверя в реальном времени (если используется systemd).
    - sudo lsof -u zver - какие файлы открыты у зверя.
    - find /home/zver -type f -mmin -60 - какие файлы изменил зверь за последний час.
    - stat /home/zver/nomera-devchonok.txt - показывает подробности что делал зверь с файлом стратегического назначения.

    3. Если пользователь пользовался sudo -i, sudo -s, sudo su, как посмотреть, что он делал под этими оболочками?

    - sudo grep zver /var/log/auth.log - история команд (втч. под sudo) зверя.
    - sudo zgrep zver /var/log/auth.log* - просмотр истории команд зверя из текущих и архивных логгов.
    - sudo aureport -x --summary - показывает сводку команд (втч. под sudo).

    Расширенный мониторинг зверей - auditd и еще.
    Ответ написан
    2 комментария
  • Актуален ли yii2 в 2025?

    viplike
    @viplike
    Yii2 | PHP8 + Flutter | Dart + API разработчик
    По популярности на гитхабе конечно он не самый топ, но по производительности, скорости разработки, гибкости спокойно даёт прикурить, если я его правильно использовать. До сих пор пилю проекты чисто на нём, очень удобно работать. Да монолит, да встроенный jquery, да там ещё какие-то минусы, но в целом отличный инструмент, ещё ни разу не подвёл, огромный респект команде, которая его поддерживает.
    Ответ написан
    1 комментарий
  • Актуален ли yii2 в 2025?

    SamDark
    @SamDark
    Yii2 core team
    Актуален. Поддерживается. Нужно искать разработчика не на фреймворке, а просто нормального разработчика. Разобраться с фреймворком нормальный разработчик сможет довольно быстро.

    Сейчас в общем не очень хорошо с рынком труда, сам фреймворк тут не особо влияет.
    Ответ написан
    4 комментария
  • Как внутри yii2 сделать запрос на centrifugo?

    @rusline18 Автор вопроса
    Нашел решение. Во первых я в docker-compose объединил network все контейнеры, что у них была одна сеть и я мог обращаться к соседней сети

    Дальше я вместо url localhost:8000/api поменял на название контейнера и получился адрес centrifugo:8000/api. И все теперь заработало
    Ответ написан
    Комментировать
  • PHP: Как сделать ссылку вместо community.php?name=...&author=... на community/name/author?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла в mod_rewrite в RewriteRule он физически не может попасть
    Ваш вариант RewriteCond %{QUERY_STRING}
    Вот тебе генератор

    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    Комментировать
  • Как добавить задачу cron на ubuntu при помощи скрипта?

    @Drno
    (crontab -l 2>/dev/null; echo "@reboot first-run-script.sh") | crontab -

    spoiler

    Файл crontab, который открывается командой `crontab -e` для пользователя root, находится в директории:

    /var/spool/cron/crontabs/root

    Ответ написан
    4 комментария
  • Как установить обновление Jetbrains?

    во всех настройках ide по пути appearance & behavior -> system settings -> http proxy можно включить опцию auto-detect proxy settings. и все vpn да прокси будут работать на отлично. если конечно vpn/proxy не в снг...
    Ответ написан
    1 комментарий
  • Как правильно составить правило для url?

    slo_nik
    @slo_nik Куратор тега Yii
    'default/<id:\d+>/brand-<brand:\d+>' => 'default/index',
    'default/<id:\d+>' => 'default/index',
    'default' => 'default/index',
    
    echo Html::a('test', ['default/index', 'id' => $id, 'brand' =>  $brand])
    echo Html::a('test', ['default/index', 'id' => $id])
    echo Html::a('test', ['default/index'])
    
    http://site.loc/default/index/3/brand-2
    http://site.loc/default/index/3
    http://site.loc/default/
    Ответ написан
    Комментировать
  • Как настроить yii2 advanced на ubuntu?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    RootDirectory настраиваете на корень сайта, не на backend/web и не на frontend/web
    В корне сайта .htaccess
    RewriteEngine On
    
    RewriteRule ^(frontend|backend)/web/ - [L]
    
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin(\/?.*)$ backend/web/$1 [L]
     
    RewriteCond %{REQUEST_URI} ^/
    RewriteRule ^(\/?.*)$ frontend/web/$1 [L]

    В backend/web .htaccess
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php

    В backend/config/main.php, в секцию request
    'baseUrl' => '/admin'

    Перейдя по адресу http://site.com попадёте на frontend, а по адресу http://site.com/admin - в админку.
    Теперь, если захотите перенести сайт в поддиректорию, например subsite, адрес изменится на http://site.com/subsite.
    Вносите изменения в .htaccess, который в корне сайта.
    RewriteEngine On
    
    RewriteRule ^(frontend|backend)/web/ - [L]
    
    RewriteCond %{REQUEST_URI} ^/(subsite/admin)
    RewriteRule ^admin(/.*)?$ backend/web/$1 [L]
    
    RewriteCond %{REQUEST_URI} ^/(subsite)
    RewriteRule ^(.*)$ frontend/web/$1 [L]

    В backend/config/main.php добавляете переменную $baseUrl
    $baseUrl = str_replace('/backend/web', '', (new yii\web\Request)->getBaseUrl());

    и подставляете в значение baseUrl
    'baseUrl' => $baseUrl . '/admin'
    В этом случае Вы не заморачиваетсь с названием поддиректории в которую перенесёте сайт, названия можете менять как угодно, но не забываете сменить название и в корневом .htaccess
    Ответ написан
    Комментировать
  • Как передать объект из контроллера в head?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    В контроллере создаёте свойство, присваиваете ему нужное значение.
    class DefaultController extends Controller
    {
        public $test;
    
        public function actionIndex()
        {
             $this->test = 'test';
             /* остальной код метода */
        }
    }

    В main.php вызываете приблизительно так
    <?= Yii::$app->controller->view->context->test ?>
    Ответ написан
    6 комментариев
  • Как загрузить изображение на сервер через AJAX?

    slo_nik
    @slo_nik
    Добрый день.
    $(function() {
            $('#form-data').on('submit', function(e){
                e.preventDefault()
                var form = $(this); // Предположу, что этот код выполняется в обработчике события 'submit' формы
                var data = new FormData();  // Для отправки файлов понадобится объект FormData. Подробнее про него можно прочитать в документации - https://developer.mozilla.org/en-US/docs/Web/API/FormData
    
    
    
                // Сбор данных из обычных полей
                form.find(':input[name]').not('[type="file"]').each(function() { 
                    var field = $(this);
                    data.append(field.attr('name'), field.val());
                });
    
    
    
                // Сбор данных о файле (будет немного отличаться для нескольких файлов)
                var filesField = form.find('input[type="file"]');
                var fileName = filesField.attr('name');
                var file = filesField.prop('files')[0];
                data.append(fileName, file) ;
    
    
    
                // Отправка данных
                var url = 'upload.php';
    
                $.ajax({
                    url: url,
                    type: 'POST',
                    data: data,
                    contentType: false,
                    cache: false, 
                    processData:false, 
                    success: function(response) {
                        console.log(response)
                    }           
                });  
            })          
        });

    <form id="form-data" action='#'>
        <input type="file" name="test" multiple>
        <input type="submit" name='submit' value="Send">
    </form>
    Ответ написан
    2 комментария