Поиск по этому блогу

среда, 15 ноября 2017 г.

Отладка XDEBUG из командной строки

На сервере экспортируем переменные окружения
 export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_port=9000 remote_host=192.168.33.1 remote_connect_back=0"
export PHP_IDE_CONFIG=serverName=your_server_name 
И запускаем скрипт
php test.php 

понедельник, 16 октября 2017 г.

Если Ваш vagrant-box не запускается на других компьютерах

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

При создании бокса при его экспортировании и последующем импортировании он может не запуститься.

Проблема может быть в виртуальном COM-порте
Он будет пытаться писать в файл, который был по пути при экспортировании.
Вероятнее всего пути на разных машинах будут разные. Именно в этом и проблема. Давайте грепнем файлики и поищем причину такого поведения
А вот и виновник.

Поправим строчку
vb.customize [ "modifyvm", :id, "--uartmode1", "file", "/tmp/ubuntu-xenial-16.04-cloudimg-console.log" ]
Теперь все заработает как надо при запуске на другой машине. 

четверг, 5 октября 2017 г.

Ошибка InnoDB: Ignoring the redo log due to missing MLOG CHECKPOINT

У меня произошло непредвиденное выключение сервера. На борту ОС Ubuntu Zesty и MySQL Ver 14.14 Distrib 5.7.19

После включения СУБД не запустилась. 

В логе tail -f /var/log/mysql/error.log видим ошибки

Идем в /var/lib/mysql и убиваем все файлы, которые начинаются  ib_logfile

Проблема в том, что mysql не может посчитать хеш-суммы.

После из удаления все запустится.



понедельник, 14 августа 2017 г.

Проблемы при импортировании ключа

GPG error: http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6C

Нужно выполнить

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C

Ключ берем из сообщения об ошибке

четверг, 8 июня 2017 г.

Sphinx failed to setup AOT with query_mode=0, use query_mode=1

Пример
CALL SNIPPETS(('Дон'), 'market_index', '@!(classifier_string,services_string) дон|дона|дону|доном|доне|доны|донов|донам|донами|донах' , '<span>' as before_match, '<\\/span>' as after_match)

Выдаст фатал

Uncaught exception Exception with message SphinxQL ERROR: failed to setup AOT with query_mode=0, use query_mode=1 SphinxQL QUERY: CALL 

Лечится добавлением конструкции 1 as query_mode в вызов снипета.

Пример
CALL SNIPPETS(('Дон'), 'market_index', '@!(classifier_string,services_string) дон|дона|дону|доном|доне|доны|донов|донам|донами|донах' , '<span>' as before_match, '<\\/span>' as after_match, 1 as query_mode)

Теперь ошибки не будет.

понедельник, 8 мая 2017 г.

Nginx 1.12 error 403 (directory index of is forbidden)

Если вы видите ошибки в логе

2017/05/08 08:00:56 [error] 2502#2502: *1 directory index of "/var/www/" is forbidden, client: 192.168.33.1, server: localhost, request: "GET / HTTP/1.1", host: "192.168.33.121"
2017/05/08 08:02:14 [error] 2587#2587: *1 directory index of "/var/www/" is forbidden, client: 192.168.33.1, server: localhost, request: "GET / HTTP/1.1", host: "192.168.33.121"
2017/05/08 08:02:15 [error] 2587#2587: *1 directory index of "/var/www/" is forbidden, client: 192.168.33.1, server: localhost, request: "GET / HTTP/1.1", host: "192.168.33.121"
2017/05/08 08:03:03 [error] 2587#2587: *1 directory index of "/var/www/" is forbidden, client: 192.168.33.1, server: localhost, request: "GET / HTTP/1.1", host: "192.168.33.121"

То проверьте, добавлена ли строка
index index.php index.html;

Если нет, то добавьте её и ошибка уйдет.

суббота, 4 февраля 2017 г.

Yii2 query builder order by function

Время от времени нам требуется сортировать выборку по функции в mysql.
Допустим нам нужно отсортировать список матчей по статусам. SQL-запрос будет выглядеть так:
SELECT id, status FROM matches ORDER BY FIELD(status, 0, 10, 20, 40, 30) 
 Давайте попробуем сделать этот же запрос используя yii2
$query = Match::find()->orderBy('FIELD(`status`, 0, 10, 20, 40, 30)');
И мы будем неприятно удивлены. При нормализации запроса цифровые статусы будут преобразованы. Если мы распечатаем запрос то увидим следующее:
SELECT * FROM `matches` ORDER BY FIELD(`status`, `0`, `1`, `2`, `3`, `30)` 
Все не совсем так, как мы планировали. Давайте заглянем в исходники. Как мы видим чтобы сделать как нам нужно не слишком сложно. Меняем использование билдера на следующее:
$query = Match::find()->orderBy(['FIELD(`status`, 0, 10, 20, 40, 30)' => SORT_ASC])
На этом все заработает. 

Количество·просмотров