Установка PHP-расширений в Ubuntu для полноценной работы WordPress и плагинов

В большинстве статей по самостоятельной настройке веб-сервера опущен один очень важный момент — установка расширений для PHP,  без которых тот же WordPress нормально работать не будет. Применительно к Вордпрессу список необходимых расширений PHP сильно зависит от того какие плагины Вы будете использовать, ниже будет приведен не полный список, но покрывающий 99% потребностей WordPress и достаточный для большинства случаев. Я установил на VPS Ubuntu 16.04 далее примеры команд для этой версии Линукс.

Устанавливать расширения удобнее всего из консоли (терминала), для установки минимально необходимого набора выполните команду:

sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-mcrypt php-curl php-gd

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

sudo apt-get install php5-curl php5-gd php5-mbstring php5-mcrypt php5-xml php5-xmlrpc php5-mcrypt php5-curl php5-gd

Просмотреть установленные расширения можно командой:

sudo dpkg —list | grep php
После установки расширений может потребоваться перезапуск веб-сервера apache:

sudo /etc/init.d/apache2 restart

Список расширений PHP которые может использовать WordPress и его плагины:

php-mysql — нужно для работы с базами данных, как правило устанавливается автоматически вместе с PHP.
php-ctype — необходимо установить если получаете ошибку Fatal error: Call to undefined function ctype_digit() in /wp-admin/includes/file.php
php-dom — не обязательное, может понадобиться если у Вас Windows-хостинг
php-exif — для работы с мета-данными фотографий
php-gd — для обработки изображений
php-iconv — конвертация строки из одной кодировки в другую
php-json — для поддержки JSON
php-posix — используется в классе WP_Filesystem_Direct
php-mbstring — для обработки строк, для работы обязательно
php-simplexml — не обязательное
php-zip, php-zlib — для работы с архивами, если необходимо

Если Вы используете виртуальный хостинг и у Вас нет возможности самостоятельно управлять сервером и устанавливать необходимые программы и расширения, зайдите в панель управления хостингом, большинство из них предоставляют возможность активировать нужные для работы расширения PHP, например вот так выглядят настройки в Cpanel:

Установка PHP расширений в Ubuntu

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

Решено: В WordPress не работает удаленная публикация постов через xmlrpc

Публиковать посты в блог на WordPress удобно через клиенты, особенно если они с большим количеством картинок, сложным форматированием и другими возможностями, которые сложно или неудобно реализовать в редакторе админ-панели. Для этого используется стандартный протокол XML-RPC, который позволяет добавлять посты удаленно, но проблема в том что реализация этой возможности в WordPress имела уязвимости из-за этого многие хостеры стали использовать различные варианты ограничения доступа к файлу xmlrpc.php, также есть плагины для WordPress которые делают использование XMLRPC более безопасным и защищают Ваш блог.

Для написания постов в этот блог я иногда использую Windows Live Writer, это клиент для блогов от Microsoft, не скажу что он обладает какими-то супер возможностями, но он вполне удобен, последний раз я его использовал до переезда на нынешний хостинг и все работало, а недавний запуск оказался неудачным, при попытке опубликовать пост получил ошибку 404, мол файл xmlrpc.php не найден. Зайдя по FTP в папку с сайтом оказалось что файл на месте, недолгое разбирательство позволило выяснить причину — доступ к файлу заблокирован хостером. Мой хостер использует ModSecurity — я детально не разбирался, это что-то вроде защитного модуля, который защищает сайты от известных и не очень атак, если в панели управления хостингом его отключить то удаленная публикация — работала, но лишаться полностью защиты не хотелось, поэтому я написал в техподдержку  и они разрешили доступ к xmlrpc.

На некоторых хостингах помогает добавление в .htaccess директивы (в моем случае не сработало):

<Files xmlrpc.php>
SecFilterInheritance Off
</Files>

Для дополнительной защиты от атак на xmlrpc можно использовать плагин Rename XMLRPC если не хотите использовать эту возможность используйте плагин Disable XML-RPC.