Решение ошибок phpMyAdmin

Заметил однажды при открытии phpMyAdmin в Ubuntu Server следующую ошибку:

addJSON( ‘list’, PMA_RecentFavoriteTable::getInstance(‘recent’)->

Для её решения необходимо установить следующий модуль php:

sudo apt install php libapache2-mod-php

Смотрите также:
Установка phpMyAdmin

Как установить и включить soap

Чтобы установить soap в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-soap

В CentOS так:

sudo yum install php-soap

Поискать имя пакета если что можно так:

apt-cache search php | grep -i soap
yum search php | grep -i soap

Активировать/деактивировать модуль можно так:

sudo phpenmod soap
sudo phpdismod soap

Перезапустим Apache2 чтобы применить изменения:

sudo service apache2 restart

Посмотрим активирован ли soap:

php -i | grep -i soap

Как установить и включить mcrypt

Чтобы установить mcrypt в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-mcrypt

В CentOS так:

sudo yum install php-mcrypt

После этого в директории PHP появится файл mcrypt.ini подгружающий расширение mcrypt.so, в моем случае появился /etc/php/7.0/mods-available/mcrypt.ini.

Активировать/деактивировать модуль можно так:

sudo phpenmod mcrypt
sudo phpdismod mcrypt

Перезапустим Apache2 чтобы применить изменения:

sudo service apache2 restart

Посмотрим активирован ли mcrypt:

php -i | grep -i mcrypt

Устранение повторяющихся заголовков на страницах WordPress

Однажды попросили убрать на страницах одного WordPress сайта повторяющиеся заголовки.

После просмотра кода, заметил что их дописывает плагин Yoast SEO, отредактировал в его настройках Titles & Metas — Yoast SEO строки:

%%title%% %%page%% %%sep%% %%sitename%%

Но получилось не очень красиво, так как плагин иногда пропускал пробел после дефиса, по этому вернул как было.

Исправил ошибку закомментировав в коде активного шаблона (файл layout-head.php) строку:

// bloginfo( 'name' );

После этого название страниц отображалось правильно.

P.S. Если отключать плагин Yoast SEO, то указанную выше строку нужно будет обратно раскомментировать.
Если тема не самописная, то вероятно после появления и установки её обновления файл layout-head.php вернется к оригинальному состоянию.

Смотрите также:
Как убрать в wordpress rss ленте повторяющийся title

Как установить и включить mbstring

Чтобы установить mbstring в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-mbstring

В CentOS так:

sudo yum install php-mbstring

Активировать/деактивировать модуль можно так:

sudo phpenmod mbstring
sudo phpdismod mbstring

Перезапустим Apache2 чтобы применить изменения:

sudo service apache2 restart

Посмотрим активирован ли mbstring:

php -i | grep -i mbstring

Контроль доступа Apache2

Контроль доступа Apache2 версии 2.4 немного отличается от 2.2, например чтобы разрешить доступ всем, в версии 2.4 нужно указывать:

Require all granted

Разрешить доступ указанным IP-адресам:

Require local
Require ip 192.168.56.1 192.168.22.10

Разрешить всем кроме указанного IP:

Require all granted
Require not ip 192.168.56.1

Разрешить указанному хосту:

Require host example.com

Запретить всем:

Require all denied

А в версии Apache2 2.2, разрешить доступ всем так:

Order allow,deny
Allow from all

Запретить всем:

Order deny,allow
Deny from all

Разрешить доступ указанным IP:

Order allow,deny
Allow from 192.168.56.1 192.168.22.10

Разрешить указанному хосту:

Order Deny,Allow
Deny from all
Allow from example.com

После изменений в конфигурации Apache2 необходима перезагрузка (если изменения были в файле .htaccess, то перезагрузка не требуется):

sudo service apache2 restart

Смотрите также:
Использование .htaccess

Предотвращение атак на WordPress xmlrpc.php и wp-login.php

Заметил однажды на некоторых серверах с WordPress сайтами большое количество обращений к файлу xmlrpc.php и wp-login.php

Как оказалось кто-то пытался подобрать пароль и получить доступ к сайту, обычно такие вещи блокирует Jetpack, ограничивается доступ по IP в админку средствами веб-сервера, но на этих почему-то никакой защиты не было.

Посчитать количество обращений к файлу в логах можно командой:

grep 'xmlrpc.php' /var/log/apache2/access.log | wc -l

Кстати команду выше можно выполнять например из системы мониторинга Zabbix, рисовать по полученным данным график, а также уведомлять о увеличении количества обращений.

Посчитать количество по каждому IP и вывести список:

grep 'xmlrpc.php' /var/log/apache2/access.log | cut -d' ' -f1 | sort | uniq -c | sort -r

Посчитать количество по каждому IP и вывести список для файла wp-login.php:

grep 'wp-login.php' /var/log/apache2/access.log | cut -d' ' -f1 | sort | uniq -c | sort -r
grep 'wp-login.php' /var/log/apache2/access.log | awk '{print $1}' | sort -n | uniq -c | sort -nr | head -20

В конфигурации apache2 или через файл .htaccess можно ограничить доступ к директории /wp-admin/ по IP, например так:

<Directory /var/www/site/wp-admin/>
  Options -Indexes
  AllowOverride All
  Order allow,deny
  allow from 127.0.0.1 192.168.11.25
</Directory>

Полностью запретить доступ к файлам так:

<Files wp-login.php>
Order Deny,Allow
Deny from all
</Files>
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

Если используется например Jetpack, то к wp-login.php лучше не ограничивать, так как могут возникнуть ошибки при обновлении плагина и отразится на его работе.
В этом случае можно активировать защиту от подбора пароля в параметрах Jetpack.

Если Jetpack не используется можно установить другие плагины, например «WP Limit Login Attempts», который отображает капчу при авторизации, а также блокирует неверные попытки входа.
Например плагином «Disable XML-RPC Pingback» можно отключить функции XML-RPC если они не нужны.

Также в файле robots.txt можно запретить индексирование поисковиками этих файлов:

User-agent: *
Disallow: /xmlrpc.php
Disallow: /wp-login.php

Скрипт отправки СМС через Goip4 шлюз

Приведу пример скрипта написанного на PHP, для отправки СМС сообщений через Goip4 шлюз.
Скрипт получает данные из базы SQL запросом и поочередно отправляет СМС на каждый номер, а также заносит запись об отправке в специальную таблицу sms.

#!/usr/bin/php

<?php

include("config/config.inc.php");
include("config/connect.inc.php");


$Result = mysqli_query($db,
"
SELECT
    abon.first_name,
    abon.second_name,
    abon.id as id,
    abon.depozit as balance,
    abon.id,
    abon.otkl,
    abon.mobile,
    abon.tarif,
    new_tarif.cost_day,
    new_tarif.cost as cost_month,
    new_tarif.dayORmonth as period
FROM
    abon, new_tarif
WHERE
    abon.tarif = new_tarif.id AND abon.state=1 AND abon.killed='' AND abon.tarif=114
"
);


while($Row = mysqli_fetch_array($Result))
{
$user = $Row[id];
$balance =$Row[balance];
$phone = $Row[mobile];

$phone_length=strlen($phone);

if($phone_length==10)
{
$mess_ = "Текст сообщения. На вашем счету $balance";
$mess =  rawurlencode($mess_);

print("$phone           $mess_\n");

//test phone
//$phone = "0670000000";
$r = file_get_contents("http://192.168.22.10/goip/en/dosend.php?USERNAME=ЛОГИН&PASSWORD=ПАРОЛЬ&smsprovider=3&goipname=lifecell&smsnum=$phone&method=2&Memo=$mess");
mysqli_query($db, "INSERT INTO sms VALUES(NULL, '$user', '$phone', NOW(), '$mess_', '$balance')");
//print($r);
//exit();

}
}
?>

Содержимое config.inc.php:

<?php
$mysql_host="localhost";
$mysql_user="ЛОГИН";
$mysql_password="ПАРОЛЬ";
$mysql_base="БАЗА";
?>

Содержимое connect.inc.php:

<?php
$db=mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_base);
mysqli_query($db, "SET NAMES 'utf8'");
?>

Установка модуля PageSpeed

На тесте установлю модуль PageSpeed в Ubuntu Server 14.04.5 LTS и CentOS

Страница загрузки с разными версиями модуля https://modpagespeed.com/doc/download
https://developers.google.com/speed/pagespeed/module/

И так, скачаем стабильную версию для Debian/Ubuntu:

sudo wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb

Или для CentOS/Fedora:

https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm

Установим в Ubuntu, модуль автоматически активируется:

sudo dpkg -i mod-pagespeed-*.deb
sudo apt-get -f install

В CentOS так:

sudo yum install at
sudo rpm -U mod-pagespeed-*.rpm

Перезапустим apache2 чтобы применить изменения:

sudo service apache2 restart
sudo /etc/init.d/apache2 restart

Готово, модуль установлен.

Обновлять в дальнейшем он будет вместе с системой командами:

sudo apt-get update
sudo apt-get upgrade

При необходимости деактивировать/активировать модуль можно командами:

sudo a2dismod pagespeed
sudo a2enmod pagespeed

Либо полностью удалить:

sudo apt-get remove mod-pagespeed-stable
sudo yum remove mod-pagespeed-stable

Файлы конфигурации модуля находятся по адресам:
/etc/apache2/mods-available/pagespeed.conf
/etc/httpd/conf.d/

Решение проблемы SSL «Connection is not secure — Parts of this page are not secure (such as images)»

Заметил однажды одном сайте с подписанным SSL сертификатом, сообщение от браузера Mozilla Firefox:

Connection is not secure — Parts of this page are not secure (such as images)

Как выяснилось на сайте были вставлены картинки с других источников, соответственно соединение можно считать не защищенным и для решения этой проблемы, картинки нужно закачать на текущий сайт и изменить ссылка на страницах, обязательно начиная с https://.

Если сайт работает по http:// и https://, а картинки находятся на нем же, то ссылки нужно изменить например с:

<img src="http://www.ixnfo.com/img.jpg">

на

<img src="/img.jpg">

Все.