Что такое PHP-расширения и библиотеки WP, которые нужны и /или используют?
Codex свободно упоминает версию PHP в требованиях к серверу , однако PHP можно настроить в довольно широком диапазоне исключений /включая разные части .
Что такое расширения /библиотеки, которые:
- требуется, чтобы WP работал вообще? MySQL ...
- необходимы для определенных функций? GD? ...
- являются предпочтительными для лучшей работы определенных функций? Curl ...
- обычно используются плагинами? Zip ...
8 ответов
Я дал еще несколько соображений и дал размер базы WP-кода (включая вложенные библиотеки), это не очень реалистично, чтобы скомпилировать такой список вручную (и повторить его для каждой новой версии - meh).
Я искал подходящий инструмент для анализа статического кода - PHP_CompatInfo и после некоторого измельчения создал следующий отчет расширений, используемых ядром (версия проверена 3.3.1):
-
cURL - 127 использует (требуется Libcurl )
- HTTP API (класс
WP_Http_curl
)
<Литий> -
SimplePie(переопределяется классомWP_SimplePie_File
) -
GoogleSpell(из пакета TinyMCE не используется?)
url_is_accessable_via_ssl ()
литий> - HTTP API (класс
-
Дата /время - 367 использует
-
DOM - 6 использует (требуется LibXML )
-
iis7_rewrite_rule_exists ()
литий> <Литий>iis7_delete_rewrite_rule ()
литий> <Литий>iis7_add_rewrite_rule ()
литий> <Литий>saveDomDocument ()
литий>
-
-
POSIX Regex - 23 использует
-
Фильтр - 2 использует
- class
PHPMailer-> ValidateAddress ()
(необязательно)
- class
-
FTP - 72 использует
- class
ftp_base
- класс
ftp
( чистый и сокеты ) - class
WP_Filesystem_FTPext
- class
WP_Filesystem_ftpsockets
- class
-
GD - 56 использует
-
сор-админ \ включает \ изображения edit.php
-
сор-админ \ включает \ image.php
-
сор-включает в себя \ media.php
-
-
Хеш - 6 использует
-
wp-includes \ pluggable.php
несколько применений (необязательно - возврат вwp-includes \ compat.php
)
-
-
iconv - 5 использует
- class
SimplePie
(необязательно) -
wp_check_invalid_utf8 ()
(необязательно) -
wp-mail.php
(необязательно)
- class
-
JSON - 20 использует
- опционально, резервные копии в
wp-includes /compat.php
- опционально, резервные копии в
-
libxml - 4 использует
- class
WP_oEmbed-> _parse_xml ()
(необязательно) - SimplePie
- class
-
Multibyte String - 29 использует
- некоторый откат в
wp-includes /compat.php
- некоторый откат в
-
MySQL - 60 использует
- class
wpdb
-
class(переопределяется классомSimplePie_Cache
WP_Feed_Cache
)
- class
-
OpenSSL - 4 использует
- class
PHPMailer
- class
-
PCRE - 743 использует
-
SimpleXML - 1 использует
- class
WP_oEmbed
(кажется необязательным)
- class
-
Сокеты - 64 использует
- класс
ftp
(сокеты
)
- класс
-
SPL - 3 использует
-
Tokenizer - 3 использует
-
wp_doc_link_parse ()
(необязательно)
-
-
XML Parser - 89 использует
-
XMLReader - 1 использует
- SimplePie (кажется необязательным)
-
Zlib - 30 использует
Ответ для этого может быть сложным и очень долгим, насколько я знаю, также будут некоторые различия между серверами и amp; OS (IIS, Apache) .. Я не могу сказать, что следующий список - это полный список, но он включает некоторые из тех, которые я знаю, которые требуются:
-
Curl и CurlSSL - Не уверен, что это REQUIRED , но большая часть кода WordPress будет использовать его, если он доступен. Тем не менее, многие плагины DO требуют и /или будут иметь ограниченные функции без него.
-
Exif - позволяет медиа-обработчику WordPress извлекать данные Exif из изображений.
-
Gettext - .po .mo обработка интернационализации локализации перевода.
-
FTP - используется для обновления плагина и WordPress через FTP.
-
GD - Не нужно вводить введение, правильно?
-
Iconv - набор символов для всех операций от разговора по почте до RSS.
-
Mbregex и Mbstring - имя довольно наглядное - предоставляйте функции, используемые повсеместно: -)
-
Mcrypt - не требуется для wordpress, но многим плагинам это нужно.
-
Mime Magic - Устаревший теперь в Wordpress - но все же хорош для совместимости с предыдущими версиями.
-
* Mysql и Mysql системы * - мы все знаем, что это такое и почему это необходимо, нет?
-
Openssl . Эта библиотека используется для обработки подключений к обработке зашифрованные сертификатами SSL для WordPress, могут иметь возможность подключаться к любому зашифрованному местоположению SSL (https).
-
POSIX - используется для обеспечения того, чтобы WordPress правильно поддерживал разрешения и владельцы файлов.
-
Информация о проверке пути - некоторые постоянные настройки.
-
Pspell - возможность проверки орфографии TinyMCE.
-
Сокеты - управление FTP-соединениями и почтовой обработкой AKA SMTP и POP в WordPress.
-
Почтовый индекс - Не уверен, что REQUIRED - но этот кросс-платформенный совместимый файл создания и извлечения zip-файла WILL будет использоваться wordpress, если он доступен.
-
Zlib - используется во многих случаях. пример - сжатие файлов js и css. опять же, не уверен, что ТРЕБУЕТСЯ , но необходимо.
Как указано выше - это далеко не полный список - он был составлен примерно год назад - и может потребоваться некоторое обновление. Многие из этих функций не совсем соответствуют REQUIRED , но ADVISED . Во многих случаях Wordpress будет использовать функцию IF, если она доступна, а если нет, будет игнорировать задачу. Хорошим примером является отсутствие библиотеки GD, это не остановит функционирование Wordpress, но не будет обрезать, изменять размер или изменять загруженные изображения - таким образом, оставляя исходный (и grey-out параметр «size» в «insert» изображение для публикации ").
В качестве побочной заметки - я бы также сказал, что, возможно, этот вопрос, вероятно, получит более правильные /обновленные ответы на serverfault.com, чем здесь ...
( Это не предназначено для ответа. Просто некоторая полезная информация. Если вы считаете, что эта информация не полезна, сообщите мне, я просто удалю ее.)
Я думаю, что говорить с точки зрения пакетов было бы проще для новичков, но поскольку пакеты варьируются от системы к системе, их сложно охватить.
Поскольку у меня есть опыт работы с Debian (дистрибутивы на основе Debian), я хотел бы поделиться этой конкретной информацией:
- php5-кли
- php5-DEV
- php5-FPM
- php5-CGI
- php5-MySQL
- php5-XMLRPC
- php5-ротор
- php5-Г.Д.
- php-apc (не требуется, но рекомендуется)
- PHP-груша
- php5-IMAP
- php5-Mcrypt
- php5-pspell
Вышеупомянутые пакеты устанавливают все расширения /библиотеки /модули, упомянутые в других ответах; , кроме Mime Magic, больше не требуется WordPress .
Еще один хороший способ убедиться, что ваш сервер на 100% совместим с WordPress, - это проверить, с какими пакетами расположены управляемые хостинговые компании . Поскольку они имеют многолетний опыт работы с жалобами клиентов на несовместимость, они будут знать лучше.
В случае Hostgator модули PHP, которые они предварительно устанавливают, включают (вы Вероятно, вам понадобится большинство , но не все):
Media Temple предоставляет phpinfo ();
файл для проверки их конфигурации. Это полезно и для сравнения.
Я разработал программу проверки среды WordPress. Это простой класс, работает в веб-SAPI или в CLI. Это поддерживаемая версия https: //github.com/szepeviktor/debian-server-tools/blob/master/webserver/php-env-check.php
& л;? PHP
/**
* Проверьте среду PHP.
*
* Использование через веб-сервер
* wget -q -O - "https://example.com/php-env-check.php"; эхо
* Использование в CLI
* php /path/to/php-env-check.php
*
* @package php-env-check
* @version 0.2.0
* @author Viktor Szà © pe <[email protected]>
* /
пространство имен O1;
//Только локальный доступ
if (php_sapi_name ()! == 'cli' & & $ _SERVER ['REMOTE_ADDR']! == $ _SERVER ['SERVER_ADDR']) {
header ('Status: 403 Forbidden');
header ('HTTP /1.1 403 Forbidden', true, 403);
header («Соединение: Закрыть»);
Выход;
}
//Удалить кешированную версию этого файла
if (function_exists ('opcache_invalidate')) {
opcache_invalidate (__FILE__);
}
//Проверка среды
$ check = new Check_Env ();
$ status = empty (ошибки $ check->);
//Отображение отчета и выход
print json_encode (ошибки $ check->);
exit ($ status? 0: 1);
/**
* Проверьте конфигурацию PHP.
* /
final class Check_Env {
/**
* Список ошибок.
* /
public $ errors = array ();
/**
* Запустите проверки.
*
* @param void
* /
public function __construct () {
//Расширения для WordPress на PHP 7.0
//http://wordpress.stackexchange.com/a/42212
//Версия двигателя
$ this-> assert ('php', 70013, PHP_VERSION_ID);
//Основные директивы
$ this-> assert_directive ('expose_php', '');
$ this-> assert_directive ('allow_url_fopen', '');
$ this-> assert_directive ('mail.add_x_header', '');
$ this-> assert_directive ('realpath_cache_size', '64k');
$ this-> assert_directive ('max_execution_time', '30');
$ this-> assert_directive ('memory_limit', '128M');
$ this-> assert_directive ('max_input_vars', '1000');
$ this-> assert_directive ('post_max_size', '4M');
$ this-> assert_directive ('upload_max_filesize', '4M');
//Скомпилировано в расширениях
//php -n -m | paste -s -d ""
//Основной фильтр даты хеш libxml openssl pcntl pcre Отражение сессии SPL standard zlib
$ this-> assert_extension ('date');
$ this-> assert_directive ('date.timezone', 'Europe /Budapest');
$ this-> assert_extension ('filter');
$ this-> assert_extension ('hash');
$ this-> assert_extension ('openssl');
$ this-> assert_extension ('pcre');
$ this-> assert_extension ('SPL');
$ this-> assert_extension ('zlib');
//Общие расширения
//dpkg -L php7.0-common | sed -n -e | ^ /usr /lib /php /\ S \ + /\ (\ S \ + \) \. поэтому $ | \ 1 | p '| paste -s -d ""
//ctype iconv gettext tokenizer сокеты pdo sysvsem fileinfo posix exif sysvmsg phar ftp calendar sysvshm shmop
$ this-> assert_extension ('ctype'); //wp-includes /ID3 /getid3.lib.php
$ this-> assert_extension ('posix');
$ this-> assert_extension ('exif'); //wp-admin /includes /image.php
$ this-> assert_extension ('ftp');
$ this-> assert_extension ('gettext'); //_ ()
$ this-> assert_extension ('iconv');
$ this-> assert_extension ('mbstring');
$ this-> assert_extension ('сокеты');
$ this-> assert_extension ('токенизатор');
//php7.0-json
$ this-> assert_extension ('json');
//php7.0-intl
$ this-> assert_extension ('intl');
//php7.0-xml
//wddx xml simplexml xmlwriter xmlreader dom xsl
$ this-> assert_extension ('xml');
$ this-> assert_extension ('SimpleXML');
$ this-> assert_extension ('xmlreader');
$ this-> assert_extension ('dom');
//php7.0-curl
$ this-> assert_extension ('curl');
//php7.0-gd
$ this-> assert_extension ('gd');
//php7.0-mysql
//mysqlnd mysqli pdo_mysql
//WP_USE_EXT_MYSQL будет использовать mysqli через mysqlnd (без PDO)
$ this-> assert_extension ('mysqlnd');
$ this-> assert_extension ('mysqli');
//php7.0-opcache
$ this-> assert_extension ('Zend OPcache', 'ext.opcache');
$ this-> assert_directive ('opcache.restrict_api', '/home /prg123');
$ this-> assert_directive ('opcache.memory_consumption', '256');
$ this-> assert_directive ('opcache.interned_strings_buffer', '16');
$ this-> assert_directive ('opcache.max_accelerated_files', '10000');
//Устаревшие расширения
$ this-> assert_disabled_extension ('mcrypt');
$ this-> assert_disabled_extension ('mysql');
//Отключенные расширения
//calendar fileinfo pcntl PDO pdo_mysql PharReadline
//shmop sysvmsg (сообщения System V) sysvsem (семафор System V) sysvshm (системная память V) wddx xmlwriter xsl
$ this-> assert_disabled_extension ('calendar');
$ this-> assert_disabled_extension ('fileinfo');
$ this-> assert_disabled_extension ('pcntl');
$ this-> assert_disabled_extension ('PDO');
$ this-> assert_disabled_extension ('pdo_mysql');
$ this-> assert_disabled_extension ('Phar');
$ this-> assert_disabled_extension ('readline');
$ this-> assert_disabled_extension ('shmop');
$ this-> assert_disabled_extension ('sysvmsg');
$ this-> assert_disabled_extension ('sysvsem');
$ this-> assert_disabled_extension ('sysvshm');
$ this-> assert_disabled_extension ('wddx');
$ this-> assert_disabled_extension ('xmlwriter');
$ this-> assert_disabled_extension ('xsl');
//php7.0-sqlite3
//pdo_sqlite sqlite3
$ this-> assert_disabled_extension ('pdo_sqlite');
$ this-> assert_disabled_extension ('sqlite3');
//Расширения сторонних разработчиков
//php7.0-redis
$ this-> assert_extension ('igbinary');
$ this-> assert_extension ('redis');
//Не для WordPress
//Сессия
$ this-> assert_directive ('session.gc_maxlifetime', '1440');
}
/**
* Просто утверждать.
*
* @param $ id string Идентификатор подтверждения
* @param $ ожидаемая строка Ожидаемое значение
* @param $ result string Текущее значение
* /
частная функция assert ($ id, $ expected, $ result) {
if ($ expected! == $ result) {
$ this-> ошибки [$ id] = $ result;
}
}
/**
* Утверждение для расширения PHP.
*
* @param $ extension_name строка Имя расширения
* @param $ id string Необязательный идентификатор assert
* /
private function assert_extension ($ extension_name, $ id = '') {
//Автоматический идентификатор
if ('' === $ id) {
$ id = 'ext.' , $ EXTENSION_NAME;
}
$ this-> assert ($ id, true, extension_loaded ($ extension_name));
}
/**
* Отрицательное утверждение для расширения PHP.
*
* @param $ extension_name строка Имя расширения
* @param $ id string Необязательный идентификатор assert
* /
private function assert_disabled_extension ($ extension_name, $ id = '') {
//Автоматический идентификатор
if ('' === $ id) {
$ id = '! ext.' , $ EXTENSION_NAME;
}
$ this-> assert ($ id, false, extension_loaded ($ extension_name));
}
/**
* Утверждение для директивы PHP.
*
* @param $ directive_name string Название директивы
* @param $ ожидаемая строка Ожидаемое значение
* @param $ id string Необязательный идентификатор assert
* /
private function assert_directive ($ directive_name, $ expected, $ id = '') {
//Автоматический идентификатор
if ('' === $ id) {
$ id = $ directive_name;
}
$ this-> assert ($ id, $ expected, ini_get ($ directive_name));
}
}
Основываясь на работе @rarst
Если вы используете Debian 7 (Debian Wheezy), вам нужно установить сам PHP и небольшое количество расширений. Большинство из того, что было упомянуто @Rarst, уже включено в одну из самых простых PHP-установок Debian.
PHP
У вас есть четыре варианта в Debian Wheezy: libapache2-mod-php5 , libapache2-mod-php5filter , php5-cgi или php5-mysql и php5-mysqlnd . php5-mysqlnd является родным и, как правило, быстрее. Некоторые могут выбрать альтернативу, например MariaDB.
Графическая библиотека Необязательный
Если вы хотите, чтобы ваши изображения изменялись, вы можете установить php5-gd или < a href = "https://packages.debian.org/wheezy/php5-imagick" rel = "nofollow"> php5-imagick . php5-imagick даст вам лучшее качество, и Wordpress будет использовать его, если он доступен. Если оба установлены, будет использоваться php5-imagick. Если ни один из них не установлен, изображения не будут изменены (и Wordpress не будет жаловаться).
HTTP Необязательный
Если вы установите php5-curl , он будет использоваться, но не требуется для ничего, кроме, возможно, лучшей производительности.
В Wordpress и большинстве расширений больше ничего не требуется, хотя некоторые расширения могут иметь другие требования.
Вот полная базовая строка установки, чтобы предоставить Wordpress все необходимое для оптимальной производительности, и ничего не происходит:
apt-get install php5-fpm php5-mysqlnd php5-imagick php5-curl
Если вам нужен простой способ проверить, соответствует ли ваш сервер этим требованиям, теперь есть удобный WP-CLI ext команда для этого.
wp ext required
показывает все расширения PHP необходимые для запуска WordPress, а wp ext рекомендуется
показывает необязательные , wp ext check
- это комбинация обеих команд.
Это пригодится, когда вам нужен быстрый способ проверить системные требования на новом сервере и /или если вы хотите продолжить обработку этого списка программно.
Вот как работает wp ext
:
$ wp ext required
+ ----------- + ----------- +
| расширение | установлен |
+ ----------- + ----------- +
| завиток | 1 |
| дата | 1 |
| дом | 1 |
| фильтр | 1 |
| ftp | 1 |
| gd | 1 |
| хэш | 1 |
| iconv | 1 |
| json | 1 |
| libxml | 1 |
| mbstring | 1 |
| mysqli | 1 |
| openssl | 1 |
| pcre | 1 |
| posix | 1 |
| SimpleXML | 1 |
| розетки | 1 |
| SPL | 1 |
| токенизатор | 1 |
| xml | 1 |
| xmlreader | 1 |
| zlib | 1 |
+ ----------- + ----------- +
Успех: все необходимые расширения установлены
Небольшой «cheatsheet» при установке PHP для Wordpress на Debian:
0. Добавьте репозиторий dotdeb
Добавьте эти две строки в файл /etc/apt/sources.list
:
deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all
Добавьте ключ GPG:
wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key добавить dotdeb.gpg
Обновить «список пакетов»:
sudo apt-get update
1. Установите PHP 7:
apt-get install php7.0-common libapache2-mod-php7.0 php7.0-cli
Источник: http://php.net/manual/en/install .unix.debian.php
2. Список модулей, включенных в пакет «php7.0-common»:
/usr/lib/php/20151012/calendar.so
/usr/lib/php/20151012/ctype.so
/usr/lib/php/20151012/exif.so
/usr/lib/php/20151012/fileinfo.so
/usr/lib/php/20151012/ftp.so
/usr/lib/php/20151012/gettext.so
/usr/lib/php/20151012/iconv.so
/usr/lib/php/20151012/pdo.so
/usr/lib/php/20151012/phar.so
/usr/lib/php/20151012/posix.so
/usr/lib/php/20151012/shmop.so
/usr/lib/php/20151012/sockets.so
/usr/lib/php/20151012/sysvmsg.so
/usr/lib/php/20151012/sysvsem.so
/usr/lib/php/20151012/sysvshm.so
/usr/lib/php/20151012/tokenizer.so
Источник: https://packages.debian.org/sid /amd64/php7.0-common/filelist
3. Чтобы установить дополнительные модули, которые требуются /рекомендуются с помощью Wordpress:
apt-get install php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-pspell php7.0-zip
Источник: https://wordpress.stackexchange.com/a/42141/107878
4. Я не смог найти следующее на debian:
Openssl
Проверка пути
Zlib
5. «apt-cache search php7» возвращает:
php7.0 - серверный, встроенный в HTML язык скриптов (метапакет)
php7.0-apcu - Пользовательский кэш APC для PHP
php7.0-apcu-bc - Модуль обратной совместимости APCu
php7.0-bcmath - модуль Bcmath для PHP
php7.0-bz2 - модуль bzip2 для PHP
php7.0-cgi - серверный, встроенный в HTML язык скриптов (CGI-бинарный)
php7.0-cli - интерпретатор командной строки для языка сценариев PHP
php7.0-common - документация, примеры и общий модуль для PHP
php7.0-curl - модуль CURL для PHP
php7.0-dba - модуль DBA для PHP
php7.0-dbg - символы отладки для PHP7.0
php7.0-dev - файлы для разработки модулей PHP7.0
php7.0-enchant - Модифицировать модуль для PHP
php7.0-fpm - серверный, встроенный в HTML язык сценариев (двоичный файл FPM-CGI)
php7.0-gd - модуль GD для PHP
php7.0-geoip - модуль GeoIP для PHP
php7.0-gmp - модуль GMP для PHP
php7.0-igbinary - igbinary serializer для PHP
php7.0-imagick - предоставляет обертку библиотеке ImageMagick
php7.0-imap - модуль IMAP для PHP
php7.0-interbase - Модуль Interbase для PHP
php7.0-intl - Модуль интернационализации для PHP
php7.0-json - модуль JSON для PHP
php7.0-ldap - модуль LDAP для PHP
php7.0-mbstring - модуль MBSTRING для PHP
php7.0-mcrypt - модуль libmcrypt для PHP
php7.0-memcached - модуль расширения memcached для PHP, использует libmemcached
php7.0-mongodb - драйвер MongoDB для PHP
php7.0-msgpack - Сериализатор MessagePack для PHP
php7.0-mysql - модуль MySQL для PHP
php7.0-odbc - модуль ODBC для PHP
php7.0-opcache - модуль Zend OpCache для PHP
php7.0-pgsql - Модуль PostgreSQL для PHP
php7.0-phpdbg - серверный, встроенный в HTML язык сценариев (двоичный файл PHPDBG)
php7.0-pspell - модуль pspell для PHP
php7.0-readline - модуль readline для PHP
php7.0-recode - модуль перекодировки для PHP
php7.0-redis - расширение PHP для взаимодействия с Redis
php7.0-snmp - модуль SNMP для PHP
php7.0-soap - SOAP-модуль для PHP
php7.0-sqlite3 - модуль SQLite3 для PHP
php7.0-ssh2 - привязки для библиотеки libssh2
php7.0-sybase - модуль Sybase для PHP
php7.0-tidy -tidy модуль для PHP
php7.0-xdebug - модуль Xdebug для PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML и XSL-модуль для PHP
php7.0-xmlrpc - модуль XMLRPC-EPI для PHP
php7.0-xsl - модуль XSL для PHP (фиктивный)
php7.0-zip - Zip-модуль для PHP
вам нужны расширения mysqli, pdo и gd. а иногда и xml-rpc.
Я уже некоторое время запускаю WP с родным расширением mysqlnd, это довольно аккуратно. У вас есть материал для размышлений, поэтому, если вы хотите посмотреть, что происходит с db в этом конкретном запросе, вы можете это сделать.
zip как расширение не требуется, большинство программ вызывают системный zip-исполняемый файл.