Was sind PHP-Erweiterungen und Bibliotheken, die WP benötigt und / oder verwendet?

Codex erwähnt in den Serveranforderungen nur die PHP-Version , jedoch kann PHP in einer ziemlich großen Auswahl von ausschließenden / einschließlich verschiedenen Teilen konfiguriert werden.

Was sind Erweiterungen / Bibliotheken, die:

  1. sind für die Arbeit von WP überhaupt erforderlich? MySQL …
  2. sind für bestimmte functionen erforderlich? GD? …
  3. sind für den besten Betrieb bestimmter functionen bevorzugt? cURL …
  4. werden häufig von Plugins verwendet? Postleitzahl…

Solutions Collecting From Web of "Was sind PHP-Erweiterungen und Bibliotheken, die WP benötigt und / oder verwendet?"

Ich habe mir mehr Gedanken darüber gemacht und die Größe der WP-Codebasis (einschließlich der gebündelten Bibliotheken) angegeben, es scheint nicht sehr realistisch zu sein, eine solche Liste von Hand zu kompilieren (und sie für jede neue Version zu wiederholen – meh).

Ich habe das entsprechende statische Code-Analyse-Tool nachgeschlagen – PHP_CompatInfo und nach einigem Basteln den folgenden Bericht der von Core verwendeten Erweiterungen erstellt (Version gescannt 3.3.1):

  • cURL – 127 verwendet (benötigt libcurl )

    • HTTP-API (class WP_Http_curl )
    • url_is_accessable_via_ssl()
    • SimplePie (überschrieben mit der class WP_SimplePie_File )
    • GoogleSpell (aus TinyMCE-Paket, wird nicht verwendet?)
  • Datum / Uhrzeit – 367 verwendet

  • DOM – 6 benutzt (benötigt libxml )

    • iis7_rewrite_rule_exists()
    • iis7_delete_rewrite_rule()
    • iis7_add_rewrite_rule()
    • saveDomDocument()
  • POSIX Regex – 23 verwendet

  • Filter – 2 verwendet

    • class PHPMailer->ValidateAddress() (optional)
  • FTP – 72 verwendet

    • class ftp_base
    • class ftp ( reine und Socket- Versionen)
    • class WP_Filesystem_FTPext
    • class WP_Filesystem_ftpsockets
  • GD – 56 verwendet

    • wp-admin\includes\image-edit.php
    • wp-admin\includes\image.php
    • wp-includes\media.php
  • Hash – 6 verwendet

    • wp-includes\pluggable.php mehrfache Verwendung (optional – Fallback in wp-includes\compat.php )
  • iconv – 5 verwendet

    • class SimplePie (optional)
    • wp_check_invalid_utf8() (optional)
    • wp-mail.php (optional)
  • JSON – 20 verwendet

    • optional, Fallbacks in wp-includes/compat.php
  • libxml – 4 verwendet

    • class WP_oEmbed->_parse_xml() (optional)
    • SimplePie
  • Multibyte String – 29 Anwendungen

    • etwas Fallback in wp-includes/compat.php
  • MySQL – 60 verwendet

    • class wpdb
    • class SimplePie_Cache (mit class WP_Feed_Cache )
  • OpenSSL – 4 verwendet

    • class PHPMailer
  • PCRE – 743 verwendet

  • SimpleXML – 1 verwendet

    • class WP_oEmbed (scheint optional)
  • sockets – 64 Anwendungen

    • class ftp ( sockets Implementierung)
  • SPL – 3 verwendet

  • Tokenizer – 3 verwendet

    • wp_doc_link_parse() (optional)
  • XML-Parser – 89 verwendet

  • XMLReader – 1 verwendet

    • SimplePie (scheint optional)
  • Zlib – 30 verwendet

Die Antwort dafür könnte kompliziert und sehr lang sein, so weit ich weiß, wird es auch einige Unterschiede zwischen Servern und OS (IIS, Apache) geben .. Ich kann nicht sagen, dass die folgende Liste eine vollständige Liste ist, aber es beinhaltet Einige von denen, die ich kenne, sind erforderlich:

  • Curl und CurlSSL – Nicht sicher, dass es erforderlich ist, aber aber viel vom WordPress-Code wird es verwenden, wenn es verfügbar ist. Viele Plugins benötigen es jedoch und / oder haben eingeschränkte functionen ohne es.

  • Exif – ermöglicht es dem Medien-Handler von WordPress, Exif-Daten aus Bildern zu ziehen.

  • Gettext – .po .mo Handhabung Übersetzung Lokalisierung Internationalisierung ..

  • FTP – um Plugins und WordPress-Upgrades per FTP durchzuführen.

  • GD – Keine Einführung nötig, oder?

  • Iconv – Zeichensatzkonvertierungen für alles von Mail zu RSS-Parsing.

  • Mbregex und Mbstring – der Name ist ziemlich deskriptiv – bietet functionen überall 🙂

  • Mcrypt – Nicht für WordPress benötigt, aber viele Plugins brauchen es.

  • Mime Magic – jetzt in WordPress veraltet – aber immer noch gut für die Back-Kompatibilität.

  • * Mysql und Mysql des Systems * – wir alle wissen, was das ist und warum es benötigt wird, nicht?

  • Openssl – Diese Bibliothek wird verwendet, um mit SSL-Zertifikaten verschlüsselte Verarbeitungsverbindungen zu verarbeiten. WordPress kann sich möglicherweise mit einem SSL (https) -verschlüsselten Speicherort verbinden.

  • POSIX – wird verwendet, um sicherzustellen, dass WordPress Dateiberechtigungen und -eigentümer ordnungsgemäß verwaltet.

  • Path Info Check – einige Permalink-Setups.

  • Pspell – Rechtschreibprüfung für TinyMCE,.

  • Sockets – Verwalten von FTP-Verbindungen und Mail-Handling von AKA SMTP und POP in WordPress.

  • Zip – Nicht sicher, ob ERFORDERLICH – aber diese plattformübergreifende kompatible Zip-Datei-Erstellungs- und -Extraktionsklasse wird von WordPress verwendet, falls verfügbar.

  • Zlib – In vielen Fällen verwendet. Beispiel – Komprimierung von js und css Dateien. wieder, nicht sicher, ob erforderlich, aber benötigt.

Wie oben erwähnt – das ist keine vollständige Liste – Es wurde vor etwa einem Jahr kompiliert – und es könnte ein Update benötigen. Viele dieser functionen sind nicht unbedingt erforderlich, werden aber empfohlen . In vielen Fällen wird WordPress eine function verwenden, wenn diese verfügbar ist, und wenn nicht, wird die Aufgabe ignoriert. Ein gutes Beispiel ist das Fehlen der GD-Bibliothek, es wird nicht daran gehindert, WordPress zu funktionieren, aber es wird die hochgeladenen Bilder nicht zuschneiden, skalieren oder verändern – so bleibt das Original (und die “Größe” -Option im “Einfügen”) Bild zum Posten “function) ..

Als Randnotiz – ich würde auch sagen, dass diese Frage wahrscheinlich mehr richtige / aktualisierte Antworten auf Serverfault.com als hier bekommen wird …

( Dies soll keine Antwort sein. Nur ein paar nützliche Informationen. Wenn Sie denken, dass diese Information nicht nützlich ist, lassen Sie es mich wissen, ich lösche sie einfach.)

Ich denke, dass das Sprechen in Paketen für Neulinge einfacher ist, aber da Pakete von System zu System variieren, ist es schwer, sie alle abzudecken.

Da ich Erfahrung mit Debian (und Debian-basierten Distributionen) habe, möchte ich diese spezifischen Informationen teilen:

  • php5-cli
  • php5-dev
  • php5-fpm
  • php5-cgi
  • php5-mysql
  • php5-xmlrpc
  • php5-curl
  • php5-gd
  • php-apc (nicht erforderlich, aber empfohlen)
  • PHP-Birne
  • php5-imap
  • php5-mcrypt
  • php5-pspell

Die oben genannten Pakete installieren alle Erweiterungen / Bibliotheken / Module, die in den anderen Antworten erwähnt sind; alle, außer Mime Magic, die von WordPress nicht mehr benötigt wird .

Ein weiterer guter Weg, um sicherzustellen, dass Ihr Server zu 100% mit WordPress kompatibel ist, besteht darin, zu prüfen, auf welchen Paketen die Managed Hosting-Anbieter vorinstalliert sind. Da sie jahrelange Erfahrung mit Kundenbeschwerden über Inkompatibilitäten haben, werden sie es besser wissen.

Im Falle von Hostgator sind die PHP-Module, die sie vorinstallieren, enthalten (Sie werden wahrscheinlich nur die meisten benötigen, aber nicht alle):

Von Hostgator vorinstallierte PHP-Module

Media Temple bietet eine phpinfo(); Datei für Sie, um ihre Konfiguration zu überprüfen. Es ist auch für Vergleichszwecke nützlich.

Ich habe meine WordPress-Umgebungsprüfung entwickelt. Es ist eine einfache class, die auf SAPI oder CLI ausgeführt wird. Dies ist die beibehaltene Version https://github.com/szepeviktor/debian-server-tools/blob/master/webserver/php-env-check.php

 < ?php /** * Check PHP environment. * * Usage through a webserver * wget -q -O - "https://example.com/php-env-check.php"; echo * Usage on CLI * php /path/to/php-env-check.php * * @package php-env-check * @version 0.2.0 * @author Viktor Szépe  */ namespace O1; // Local access only if ( php_sapi_name() !== 'cli' && $_SERVER['REMOTE_ADDR'] !== $_SERVER['SERVER_ADDR'] ) { header( 'Status: 403 Forbidden' ); header( 'HTTP/1.1 403 Forbidden', true, 403 ); header( 'Connection: Close' ); exit; } // Remove cached version of this file if ( function_exists( 'opcache_invalidate' ) ) { opcache_invalidate( __FILE__ ); } // Check environment $check = new Check_Env(); $status = empty( $check->errors ); // Display report and exit print json_encode( $check->errors ); exit( $status ? 0 : 1 ); /** * Check PHP configuration. */ final class Check_Env { /** * List of errors. */ public $errors = array(); /** * Run the checks. * * @param void */ public function __construct() { // Extensions for WordPress on PHP 7.0 // http://wordpress.stackexchange.com/a/42212 // Engine version $this->assert( 'php', 70013, PHP_VERSION_ID ); // Core directives $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' ); // Compiled in Extensions // php -n -m | paste -s -d " " // Core date filter hash libxml openssl pcntl pcre Reflection session 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' ); // Common Extensions // dpkg -L php7.0-common | sed -n -e 's|^/usr/lib/php/\S\+/\(\S\+\)\.so$|\1|p' | paste -s -d " " // ctype iconv gettext tokenizer sockets 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( 'sockets' ); $this->assert_extension( 'tokenizer' ); // 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 will use mysqli through mysqlnd (no 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' ); // Deprecated Extensions $this->assert_disabled_extension( 'mcrypt' ); $this->assert_disabled_extension( 'mysql' ); // Disabled Extensions // calendar fileinfo pcntl PDO pdo_mysql Phar readline // shmop sysvmsg(System V messages) sysvsem(System V semaphore) sysvshm(System V shared memory) 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' ); // 3rd-party Extensions // php7.0-redis $this->assert_extension( 'igbinary' ); $this->assert_extension( 'redis' ); // Not for WordPress // Session $this->assert_directive( 'session.gc_maxlifetime', '1440' ); } /** * Simple assert. * * @param $id string Assert ID * @param $expected string Expected value * @param $result string Current value */ private function assert( $id, $expected, $result ) { if ( $expected !== $result ) { $this->errors[ $id ] = $result; } } /** * Assert for a PHP extension. * * @param $extension_name string Extension name * @param $id string Optional assert ID */ private function assert_extension( $extension_name, $id = '' ) { // Automatic ID if ( '' === $id ) { $id = 'ext.' . $extension_name; } $this->assert( $id, true, extension_loaded( $extension_name ) ); } /** * Negative assert for a PHP extension. * * @param $extension_name string Extension name * @param $id string Optional assert ID */ private function assert_disabled_extension( $extension_name, $id = '' ) { // Automatic ID if ( '' === $id ) { $id = '!ext.' . $extension_name; } $this->assert( $id, false, extension_loaded( $extension_name ) ); } /** * Assert for a PHP directive. * * @param $directive_name string Directive name * @param $expected string Expected value * @param $id string Optional assert ID */ private function assert_directive( $directive_name, $expected, $id = '' ) { // Automatic ID if ( '' === $id ) { $id = $directive_name; } $this->assert( $id, $expected, ini_get( $directive_name ) ); } } 

Basierend auf der Arbeit von @rast

Wenn Sie Debian 7 (Debian Wheezy) verwenden, müssen Sie PHP selbst und eine kleine Anzahl von Erweiterungen installieren. Das meiste, was von @Rarst erwähnt wurde, ist bereits in einer der einfachsten PHP-Installationen von Debian enthalten.

PHP

Sie haben vier Optionen in Debian Wheezy: libapache2-mod-php5 , libapache2-mod-php5filter , php5-cgi oder php5-fpm . Ich wähle php5-fpm, aber alles hängt davon ab, wie Ihr Webserver und PHP interagieren sollen.

MySQL

Sie benötigen auch PHP, um MySQL zu verwenden. Ihre Optionen sind php5-mysql und php5-mysqlnd . php5-mysqlnd ist nativ und generell schneller. Einige könnten eine Alternative wie MariaDB wählen.

Grafikbibliothek Optional

Wenn Sie die Größe Ihrer Bilder ändern möchten, können Sie entweder php5-gd oder php5-imagick installieren . php5-imagick wird Ihnen bessere Qualität geben und WordPress wird es verwenden, wenn es verfügbar ist. Wenn beide installiert sind, wird php5-imagick verwendet. Wenn keine installiert ist, wird die Größe der Bilder nicht geändert (und WordPress wird sich nicht beschweren).

HTTP Optional

Wenn Sie php5-curl installieren, wird es verwendet, ist aber für nichts außer vielleicht besserer performance erforderlich.


WordPress und die meisten Erweiterungen benötigen nichts anderes, obwohl einige Erweiterungen andere Anforderungen haben können.

Hier ist die komplette Installationszeile, um WordPress alles zu geben, was es für eine optimale performance braucht und nichts, was es nicht tut:

 apt-get install php5-fpm php5-mysqlnd php5-imagick php5-curl 

Wenn Sie auf einfache Weise überprüfen möchten, ob Ihr Server diese Anforderungen erfüllt, gibt es jetzt einen praktischen WP-CLI ext-Befehl .

wp ext required zeigt alle PHP-Erweiterungen an, die zum Ausführen von WordPress erforderlich sind , wp ext recommended optionale . wp ext check ist eine Kombination beider Befehle.

Diese sind nützlich, wenn Sie schnell die Systemanforderungen auf einem neuen Server überprüfen und / oder diese Liste programmgesteuert weiterverarbeiten möchten.

So funktioniert wp ext required :

 $ wp ext required +-----------+-----------+ | extension | installed | +-----------+-----------+ | curl | 1 | | date | 1 | | dom | 1 | | filter | 1 | | ftp | 1 | | gd | 1 | | hash | 1 | | iconv | 1 | | json | 1 | | libxml | 1 | | mbstring | 1 | | mysqli | 1 | | openssl | 1 | | pcre | 1 | | posix | 1 | | SimpleXML | 1 | | sockets | 1 | | SPL | 1 | | tokenizer | 1 | | xml | 1 | | xmlreader | 1 | | zlib | 1 | +-----------+-----------+ Success: All required extensions are installed 

Ein kleiner “cheatsheet” bei der Installation von PHP für WordPress auf Debian:

0. Fügen Sie das Dotdeb-Repository hinzu

Fügen Sie diese zwei Zeilen zu Ihrer Datei /etc/apt/sources.list :

 deb http://packages.dotdeb.org jessie all deb-src http://packages.dotdeb.org jessie all 

Fügen Sie den GPG-Schlüssel hinzu:

 wget https://www.dotdeb.org/dotdeb.gpg sudo apt-key add dotdeb.gpg 

Aktualisieren Sie die “Paketliste”:

 sudo apt-get update 

1. Installieren Sie PHP 7:

 apt-get install php7.0-common libapache2-mod-php7.0 php7.0-cli 

Quelle: http://php.net/manual/en/install.unix.debian.php

2. Liste der Module, die im Paket “php7.0-common” enthalten sind:

 /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 

Quelle: https://packages.debian.org/sid/amd64/php7.0-common/filelist

3. Um die zusätzlichen Module zu installieren, die von wordpress benötigt / empfohlen werden:

 apt-get install php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-pspell php7.0-zip 

Quelle: https://wordpress.stackexchange.com/a/42141/107878

4. Ich konnte Folgendes bei debian nicht finden:

 Openssl Path Info Check Zlib 

5. “apt-cache search php7” gibt zurück:

 php7.0 - server-side, HTML-embedded scripting language (metapackage) php7.0-apcu - APC User Cache for PHP php7.0-apcu-bc - APCu Backwards Compatibility Module php7.0-bcmath - Bcmath module for PHP php7.0-bz2 - bzip2 module for PHP php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.0-cli - command-line interpreter for the PHP scripting language php7.0-common - documentation, examples and common module for PHP php7.0-curl - CURL module for PHP php7.0-dba - DBA module for PHP php7.0-dbg - Debug symbols for PHP7.0 php7.0-dev - Files for PHP7.0 module development php7.0-enchant - Enchant module for PHP php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) php7.0-gd - GD module for PHP php7.0-geoip - GeoIP module for PHP php7.0-gmp - GMP module for PHP php7.0-igbinary - igbinary serializer for PHP php7.0-imagick - Provides a wrapper to the ImageMagick library php7.0-imap - IMAP module for PHP php7.0-interbase - Interbase module for PHP php7.0-intl - Internationalisation module for PHP php7.0-json - JSON module for PHP php7.0-ldap - LDAP module for PHP php7.0-mbstring - MBSTRING module for PHP php7.0-mcrypt - libmcrypt module for PHP php7.0-memcached - memcached extension module for PHP, uses libmemcached php7.0-mongodb - MongoDB driver for PHP php7.0-msgpack - MessagePack serializer for PHP php7.0-mysql - MySQL module for PHP php7.0-odbc - ODBC module for PHP php7.0-opcache - Zend OpCache module for PHP php7.0-pgsql - PostgreSQL module for PHP php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.0-pspell - pspell module for PHP php7.0-readline - readline module for PHP php7.0-recode - recode module for PHP php7.0-redis - PHP extension for interfacing with Redis php7.0-snmp - SNMP module for PHP php7.0-soap - SOAP module for PHP php7.0-sqlite3 - SQLite3 module for PHP php7.0-ssh2 - Bindings for the libssh2 library php7.0-sybase - Sybase module for PHP php7.0-tidy - tidy module for PHP php7.0-xdebug - Xdebug Module for PHP php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP php7.0-xmlrpc - XMLRPC-EPI module for PHP php7.0-xsl - XSL module for PHP (dummy) php7.0-zip - Zip module for PHP 

Referenz: https://packages.debian.org/source/sid/php7.0

Sie benötigen die Erweiterungen mysqli, pdo und gd. und manchmal xml-rpc.

Ich habe WP schon seit einiger Zeit mit der mysqlnd native extension ausgeführt, es ist ziemlich ordentlich. Ist Reflektionssache eingebaut, wenn Sie sehen wollen, was mit der db in dieser spezifischen Anfrage passiert, können Sie es tun.

zip als Erweiterung wird nicht benötigt, die meisten Programme rufen die ausführbare System-Zip-Datei auf.