Ubuntu включаем mod_rewrite.

Перешел с Windows на Linux и столкнулся с проблемой, что проекты на Laravel не запускаются. Выяснил что это происходит из-за неправильной настройки локального хоста.

В главной директории Laravel находиться файл .htaaccess в котором включается mod_rewrite, который не как не реагировал.

В первую очередь нежно проверь есть ли файл rewrite.load, переходим в /etc/apache2/mods-available ищем этот файл, если отсутствует rewrite.load, то нужно выполнить команду: a2enmod rewrite.

Если есть, то все хорошо и переходим  в modsenabled и делаем символьную ссылку на rewrite.load

sudo ln -s ../mods-available/rewrite.load rewrite.load

Теперь проверяем виртуальные хосты:

Ubuntu до 14.0: открываем /etc/apache2/sites-available/default (или файл вашего хоста, например test.local.conf)

Ubuntu старше 14.0: открываем файл /etc/apache2/apache2.conf

И меняем AllowOverride None на AllowOverride All

 

Перезагружаем apache

sudo /etc/init.d/apache2 restart

Все должно работать.

 

Поиск 404 ошибки.

 

Основная цель поиск страниц которые ведут на страницы 404.

Первый этап был сканирование всех ссылок сайта и поиск битых ссылок.

Сканирование сайта.

Подготовка ссылок.

Первым делом проверяем есть ли у Вас карта сайта. Если нет, то ищем генератор sitemap, например https://gensitemap.ru/. Сохраняем xml файл, потом открываем его с помощью MS Exel, будет много предупреждений просто жмем Ок. Видим примерно следующее:

Удаляем заголовки и копируем первый столбец, потом вставляем ссылки в текстовый редактор, который сохраняет переходы на строку, в моем случае это Sublime Text 3, сохраняем как TXT.

Читать далее

phpStorm. Добавление своих снипетов в Emmet.

Переходим в настройки phpStorm(CTRL+ALT+S) открываем вкладку «Live Templates»  переходим в категорию html/xml и жмем + справа.

Прописываем Abbreviation(по какому значению будет вызываться) добавляем описание и пишем текст шаблона ниже будет кнопка «Change» выбираем расширение фалов в которых будет применяться снипет. Так же справа есть настройка(Expand with) по какой клавише будет вызов.

custom_emmet

 

Laravel. Вывод SQL запроса.

Для отладки SQL запроса требуется посмотреть, какой запрос выполняется решение для Laravel ниже

 

$data->where(...);
$sql = $data->toSql();
$bindings = $data->getBindings();
foreach ($bindings as $binding) {
    $value = is_numeric($binding) ? $binding : "'".$binding."'";
    $sql = preg_replace('/\?/', $value, $sql, 1);
}
echo $sql;

Выведет примерно следующее.

select * from `conversions` where exists (select * from `landings` inner join `visits` on `landings`.`id` = `visits`.`landing_id` where `conversions`.`id` = `visits`.`id` and `landings`.`id` = 1) and `date` >= '2017-01-03' limit 15

 

Laravel. Specified key was too long; max key length is 767 bytes.

Этот сбой произойдет потому что UNIQUE_INDEX на поле email требует 1020 байт (255 * 4).

 

[Illuminate\Database\QueryException]                                         
 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t  
 oo long; max key length is 767 bytes (SQL: alter table `users` add unique `  
 users_email_unique`(`email`))                                                
                                                                              

                                                                              
 [PDOException]                                                               
 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t  
 oo long; max key length is 767 bytes                                         

Для решения необходимо перейти в папку config, открыть файл database.php

Для типа базы данных mysql заменить кодировку с

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

на

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

 

 

Права в Laravel 5. Часть 2.

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

Читать далее

Права в Laravel 5. Часть 1.

Хочу разобрать случай когда нужно выставлять права определенному пользователю. Например, Вы разрабатываете CRM-систему у владельца компании есть сотрудники которые имеют доступ к системе и Вам необходимо чтобы несколько сотрудников выполняли разные функции или запретить экспорт базы данных клиентов.

Читать далее

Joomla. Как сделать свой sitemap или карту сайта.

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

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

В моем случае все же понадобилось установить плагин, который подключает php файл. Если нужен плагин напишите в комментариях выложу.

Читать далее

Laravel. Получить значения enum из таблицы

public static function getEnumValues($table, $column)
{
  $type = DB::select( DB::raw("SHOW COLUMNS FROM $table WHERE Field = '$column'") )[0]->Type;
  preg_match('/^enum\((.*)\)$/', $type, $matches);
  $enum = array();
  foreach( explode(',', $matches[1]) as $value )
  {
    $v = trim( $value, "'" );
    $enum = array_add($enum, $v, $v);
  }
  return $enum;
}

Передаются параметры: название таблицы и ячейка в которой содержится значение.