Авг 192014
 

Потратил на чтение документации достаточно времени, заставляя Samba работать с символическими ссылками. Предлагаю Вам свое решение.

Открываем конфигурационный файл:

sudo nano /etc/samba/smb.conf

В начале секции [global] пишем.

unix extensions = no
wide links = yes
follow symlinks = yes

Не забываем перезагрузить демон:

service smbd restart
/etc/init.d/samba restart

Данное решение очень удобно если Вам надо работать с файлами в разных частях системы.
Не забывайте про безопасность, она очень важна в системе.

Июл 162014
 

Решение проблемы с обрезанными массивами в PHP

 

Решил написать сегодня небольшую, но очень важную статью об параметрах которые находятся в PHP:

post_max_size = 512M

Максимально допустимый размер данных, отправляемых через методом POST. Этот параметр влияет на объем передаваемых данных методом POST, так же важно учитывать его при реализации загрузки файлов через скрипты, в частности на размер файла эта директива и влияет. По умолчанию данный параметр стоит 8Мб.

post_max_vars = 2000

Если про post_max_size все хорошо описано в мануале и он есть по умолчанию в конфигурации php, то про параметр post_max_vars глухая тишина. Так что же это такой за параметр. Post_max_vars указывает интерпретатору сколько будет обрабатываться строк в POST запросе, ограничение стоит по умолчанию 200 строк.
Для крупных проектов, особенно реализованных на таких тяжеловесах как Битрикс это довольно мало.
Поэтому, если вы столкнулись с проблемой, когда при сохранении данных вы получается обрезанный POST массив или массив в котором только часть передаваемых строк, значит вам нужно не искать ошибку в вашем скрипте, а менять параметры на сервере. Если такой возможности нет, значит надо переделывать скрипт так, что бы он не превышал лимитов.

max_input_vars = 2000

Сколько входных переменных может быть принято в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_POST и $_COOKIE отдельно). Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, и все последующие переменные в запросе игнорируются. Это ограничение применяется к каждому уровню вложенности входного многомерного массива.
Ограничение стоит по умолчанию 200 строк.

Поменяем в php.ini.
Параметр post_max_size уже там указан, и достаточно найти его поиском и поменять, тогда как post_max_vars придется дописать, например под post_max_size, с max_input_vars мы поступим таким же образом.

Июн 062014
 

Исправляем ошибку 413 Request Entity Too Large

Ошибка появляется когда объем файла превышает допустимый размер. Одна из основных причин — это настройки по умолчанию nginx, а именно параметра client_max_body_size, который по умолчанию равен 1m.

Директива client_max_body_size задаёт максимально допустимый размер
тела запроса клиента, указываемый в строке "Content-Length" в
заголовке запроса. Если размер больше заданного,
то клиенту возвращается ошибка "Request Entity Too Large" (413).
Следует иметь в виду, что браузеры не умеют корректно показывать
эту ошибку.

Решение
В конфигурационном файле nginx.conf, добавить директиву если нет client_max_body_size или увеличить значение:

Пример:

client_max_body_size 512M
Янв 032014
 

Deiban, Ubuntu MySQL: “Access denied for user ‘debian-sys-maint’@’localhost’”

Для всех Ubuntu/MySQL или Debian/MySQL. У меня уже была создана папка /usr/lib/mysql с данными на другом сервере, и мне надо было перенести информацию на новый сервер.

После переноса информации, у меня высветилась подобная ошибка:

anton@server:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

Что же это на пользователь debian-sys-maint, где его искать, и зачем? Данный пользователь был создан MySQL исключительно для Debian, Ubuntu. Для того, чтобы иметь возможность запускать/останавливать базу данных и выполнять другие операции связанных с техническим обслуживанием.

Но тогда почему «Отказано в доступе» для этого пользователя? Ну, вопрос в том, что с каждым обновлением MySQL, пароль пользователя в базе данных переписывается. Смотрим в файле /etc/mysql/debian.cnf для того, чтобы найти пароль этого пользователя.

К счастью, решение этого вопроса довольно прост.

Вопервых мы открываем файл debian.cnf:

anton@server:~$ sudo /etc/mysql/debian.cnf

Содержимое файла должно выглядеть примерно так:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = n4aSHUP04s1J32X5
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user     = debian-sys-maint
password = n4aSHUP04s1J32X5
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Смотрим на пароль, в данном примере он n4aSHUP04s1J32X5

Следующий шаг, подключится к базе данных из под пользователя root. И ввести данную команду:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';

После проделанной процедуры, мы перезагружаем базу данных:

anton@server:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.
Окт 122013
 

если что, то у меня ошибка 1093 — You can’t specify target table ‘germany’ for update in FROM clause

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

UPDATE `germany`
SET `goals` = (
SELECT `goals` FROM (SELECT `goals` FROM `germany` WHERE `name` = ‘Nickname’ LIMIT 1) as `tmp`
)
WHERE `name` = ‘Nickname1’