¿Qué son las extensiones y bibliotecas PHP que WP necesita y / o usa?

71

Codex solo menciona la versión de PHP en los requisitos del servidor , sin embargo, PHP puede configurarse en un rango bastante amplio de excluir / incluir diferentes partes .

¿Qué son las extensiones / bibliotecas que:

  1. son necesarios para que WP funcione? MySQL ...
  2. son necesarios para funciones específicas? GD? ...
  3. ¿Se prefieren para el mejor funcionamiento de funciones específicas? cURL ...
  4. son comúnmente utilizados por los complementos? Zip ...
pregunta Rarst 12.02.2012 - 22:42

8 respuestas

81

Pensé más en esto y dado el tamaño de la base de códigos WP (incluidas las bibliotecas integradas), no parece muy realista compilar dicha lista a mano (y repetirla para cada nueva versión - meh).

Busqué la herramienta de análisis de código estático adecuada - PHP_CompatInfo y después de algunos retoques generados luego del informe de las extensiones utilizadas por Core (versión escaneada 3.3.1):

  • cURL - 127 usos (requiere libcurl )

    • API HTTP (clase WP_Http_curl )
    • url_is_accessable_via_ssl()
    • SimplePie (anulado con la clase WP_SimplePie_File )
    • GoogleSpell (del paquete TinyMCE, ¿no se utiliza?)
  • Fecha / Hora : 367 usos

  • DOM - 6 usos (requiere libxml )

    • iis7_rewrite_rule_exists()
    • iis7_delete_rewrite_rule()
    • iis7_add_rewrite_rule()
    • saveDomDocument()
  • Regex de POSIX : 23 usos

  • Filtro : 2 usos

    • class PHPMailer->ValidateAddress() (opcional)
  • FTP : 72 usos

    • class ftp_base
    • class ftp (versiones pure y sockets )
    • class WP_Filesystem_FTPext
    • class WP_Filesystem_ftpsockets
  • GD - 56 usos

    • wp-admin\includes\image-edit.php
    • wp-admin\includes\image.php
    • wp-includes\media.php
  • Hash : 6 usos

    • wp-includes\pluggable.php usos múltiples (opcional - reserva en wp-includes\compat.php )
  • iconv : 5 usos

    • class SimplePie (opcional)
    • wp_check_invalid_utf8() (opcional)
    • wp-mail.php (opcional)
  • JSON - 20 usos

    • opcional, fallbacks en wp-includes/compat.php
  • libxml : 4 usos

    • class WP_oEmbed->_parse_xml() (opcional)
    • SimplePie
  • Cadena multibyte : 29 usos

    • alguna reducción en wp-includes/compat.php
  • MySQL - 60 usos

    • class wpdb
    • class SimplePie_Cache (sobrescrito con class WP_Feed_Cache )
  • OpenSSL : 4 usos

    • class PHPMailer
  • PCRE - 743 usos

  • SimpleXML : 1 uso

    • class WP_oEmbed (parece opcional)
  • Sockets - 64 usos

    • class ftp ( sockets implementación)
  • SPL : 3 usos

  • Tokenizer : 3 usos

    • wp_doc_link_parse() (opcional)
  • Analizador XML : 89 usos

  • XMLReader : 1 uso

    • SimplePie (parece opcional)
  • Zlib : 30 usos

respondido por el Rarst 13.02.2012 - 20:55
26

La respuesta para esto podría ser complicada y muy larga, por lo que sé, también habrá algunas diferencias entre los servidores & OS (IIS, Apache) .. No puedo decir que la siguiente lista es una lista COMPLETA, pero incluye algunos de los que sé que son necesarios:

  • Curl and CurlSSL : no estoy seguro de que sea REQUIRED pero la mayor parte del código de WordPress lo usará si está disponible. Muchos complementos, sin embargo, lo requieren y / o tendrán funciones limitadas sin él.

  • Exif : permite que el manejador de medios de WordPress extraiga los datos de Exif fuera de las imágenes.

  • Gettext - .po .mo se encarga de la internacionalización de la traducción.

  • FTP : se utiliza para hacer actualizaciones de plugins y WordPress a través de FTP.

  • GD : no es necesaria la introducción, ¿verdad?.

  • Iconv : conversiones de conjuntos de caracteres para todo, desde correo hasta análisis de RSS.

  • Mbregex y Mbstring - el nombre es bastante descriptivo - proporciona funciones utilizadas en todas partes :-)

  • Mcrypt : no es necesario para WordPress, pero muchos complementos lo necesitan.

  • Mime Magic : está obsoleto ahora en wordpress, pero aún así es bueno para la compatibilidad con versiones anteriores.

  • * Mysql y Mysql del sistema * : todos sabemos qué es esto y por qué es necesario, ¿no?

  • Openssl : esta biblioteca se usa para manejar conexiones de procesamiento cifrados con certificados SSL para que WordPress pueda conectarse a cualquier ubicación cifrada SSL (https).

  • POSIX : se utiliza para garantizar que WordPress mantenga adecuadamente los permisos y las propiedades de los archivos.

  • Verificación de información de ruta : algunas configuraciones de enlace permanente.

  • Pspell : capacidades de revisión ortográfica para TinyMCE,.

  • Sockets : administra las conexiones de FTP y el manejo del correo AKA SMTP y POP en WordPress.

  • Zip : no estoy seguro si SE REQUIERE, pero wordpress, si está disponible, utilizará esta clase de extracción y creación de archivos zip compatible con varias plataformas.

  • Zlib : se utiliza en muchos casos. Ejemplo: compresión de archivos js y css. De nuevo, no estoy seguro de si REQUIERA pero es necesario.

Como se indicó anteriormente, esto no es de ninguna manera una lista COMPLETA. Se compiló hace aproximadamente un año y podría necesitar alguna actualización. Muchas de esas funciones no son exactamente REQUIRED sino ADVISED . En muchos casos, wordpress usará una función SI está disponible, y si no, ignorará la tarea. Un buen ejemplo es la falta de biblioteca GD, no impedirá el funcionamiento de wordpress, pero no recortará, redimensionará ni alterará las imágenes cargadas, lo que dejará la original (y deshabilitará la opción "tamaño" en la "inserción Imagen para publicar "función) ..

Como nota adicional, también diría que tal vez esta pregunta probablemente obtenga más respuestas correctas / actualizadas en serverfault.com que aquí ...

    
respondido por el krembo99 13.02.2012 - 10:27
12

( Esto no pretende ser una respuesta. Solo información útil. Si cree que esta información no es útil, hágamelo saber, simplemente la eliminaré).

Creo que hablar en términos de paquetes sería más fácil para los novatos, pero como los paquetes varían de un sistema a otro, es difícil cubrirlos todos.

Como tengo experiencia con Debian (y distribuciones basadas en Debian), me gustaría compartir esta información específica:

  • php5-cli
  • php5-dev
  • php5-fpm
  • php5-cgi
  • php5-mysql
  • php5-xmlrpc
  • php5-curl
  • php5-gd
  • php-apc (no es necesario, pero se recomienda)
  • php-pear
  • php5-imap
  • php5-mcrypt
  • php5-pspell

Los paquetes mencionados anteriormente instalan todas las extensiones / bibliotecas / módulos mencionados en las otras respuestas; todos, excepto Mime Magic, que ya no es necesario para WordPress .

Otra buena manera de asegurarte de que tu servidor sea 100% compatible con WordPress es comprobar qué paquetes vienen con las empresas de hospedaje administrado . Como tienen años de experiencia con las quejas de los clientes sobre incompatibilidades, lo sabrán mejor.

En el caso de Hostgator , los módulos PHP que preinstalan incluyen (es probable que solo necesites < em> la mayoría pero no todas ellas):

MediaTempleproporcionaunarchivo phpinfo(); para que puedas verificar su configuración. También es útil para propósitos de comparación.

    
respondido por el its_me 10.02.2013 - 04:17
6

He desarrollado mi corrector de entorno de WordPress. Es una clase simple, se ejecuta en la web SAPI o en la CLI. Esta es la versión mantenida enlace

<?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 <viktor@szepe.net>
 */

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$||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 ) );
    }
}

Basado en el trabajo de @rarst

    
respondido por el Szépe Viktor 24.11.2016 - 20:14
4

Si desea una forma fácil de verificar si su servidor cumple con estos requisitos, ahora hay un WP-CLI ext comando para hazlo.

wp ext required muestra todas las extensiones de PHP necesarias para ejecutar WordPress, mientras que wp ext recommended muestra las opcionales . wp ext check es una combinación de ambos comandos.

Esto es útil cuando necesita una forma rápida de verificar los requisitos del sistema en un nuevo servidor y / o si desea continuar procesando esta lista mediante programación.

Así es como funciona 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
    
respondido por el swissspidy 18.01.2018 - 17:12
3

Si está utilizando Debian 7 (Debian Wheezy), necesita instalar PHP y una pequeña cantidad de extensiones. La mayoría de lo que se mencionó en @Rarst ya está incluido en una de las instalaciones de PHP más básicas de Debian.

PHP

Tienes cuatro opciones en Debian Wheezy: libapache2-mod-php5 , libapache2-mod-php5filter , php5-cgi , o php5-fpm . Elijo php5-fpm pero todo depende de cómo desea que interactúen su servidor web y PHP.

MySQL

También necesitas PHP para usar MySQL. Sus opciones son php5-mysql y php5-mysqlnd . php5-mysqlnd es nativo y generalmente más rápido. Algunos pueden elegir una alternativa como MariaDB.

Biblioteca de gráficos Opcional

Si desea cambiar el tamaño de sus imágenes, puede instalar php5-gd o php5-imagick . php5-imagick te dará una mejor calidad y Wordpress lo usará si está disponible. Si ambos están instalados, se utilizará php5-imagick. Si no se instala ninguno, las imágenes no cambiarán de tamaño (y Wordpress no se quejará).

HTTP Opcional

Si instala php5-curl , se usará, pero no se requiere para nada, excepto quizás un mejor rendimiento .

Wordpress y la mayoría de las extensiones no requieren nada más, aunque algunas extensiones pueden tener otros requisitos.

Aquí está la línea de instalación básica completa para darle a Wordpress todo lo que necesita para un rendimiento óptimo y nada que no lo haga:

apt-get install php5-fpm php5-mysqlnd php5-imagick php5-curl
    
respondido por el user55371 11.07.2014 - 00:31
1

Una pequeña "hoja de trucos" al instalar PHP para Wordpress en Debian:

0. Agrega el repositorio dotdeb

Agregue estas dos líneas a su archivo /etc/apt/sources.list :

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

Agregue la clave GPG:

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

Actualice la "lista de paquetes":

sudo apt-get update

1. Instala PHP 7:

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

Fuente: enlace

2. Lista de módulos, que se incluyen en el paquete "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

Fuente: enlace

3. Para instalar los módulos adicionales requeridos / recomendados por wordpress:

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

Fuente: enlace

4. No pude encontrar lo siguiente en debian:

Openssl
Path Info Check
Zlib

5. "apt-cache search php7" devuelve:

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

Referencia: enlace

    
respondido por el JedatKinports 20.03.2017 - 10:57
0

necesitas las extensiones mysqli, pdo y gd. y a veces xml-rpc.

He estado ejecutando WP con la extensión nativa mysqlnd por un tiempo, es bastante bueno. Se han incorporado elementos de reflexión, por lo que si desea ver qué sucede con la db en esa solicitud específica, puede hacerlo.

zip como una extensión no es necesaria, la mayoría de los programas llaman al ejecutable zip del sistema.

    
respondido por el Vid Luther 13.02.2012 - 16:10

Lea otras preguntas en las etiquetas