O que são extensões e bibliotecas PHP que o WP precisa e / ou usa?

71

O Codex vagamente menciona apenas a versão do PHP nos requisitos do servidor , no entanto o PHP pode ser configurado em uma ampla gama de exclusão / incluindo diferentes partes .

O que são extensões / bibliotecas que:

  1. são necessários para que o WP funcione? MySQL ...
  2. são necessários para funções específicas? GD? ...
  3. são preferidos para melhor operação de funções específicas? cURL ...
  4. são comumente usados por plugins? Zip ...
por Rarst 12.02.2012 / 22:42
fonte

8 respostas

81

Eu dei um pouco mais de reflexão e tamanho dado à base de código WP (incluindo bibliotecas empacotadas), não parece muito realista compilar essa lista manualmente (e repeti-la para cada nova versão - meh).

Eu pesquisei uma ferramenta de análise de código estática apropriada - PHP_CompatInfo e depois de alguns ajustes gerados após o relatório de extensões usadas pelo núcleo (versão digitalizada 3.3.1):

  • cURL - 127 usos (requer libcurl )

    • API HTTP (classe WP_Http_curl )
    • url_is_accessable_via_ssl()
    • SimplePie (substituído pela classe WP_SimplePie_File )
    • GoogleSpell (do pacote TinyMCE, não é usado?)
  • Data / Hora - 367 usa

  • DOM - 6 usos (requer libxml )

    • iis7_rewrite_rule_exists()
    • iis7_delete_rewrite_rule()
    • iis7_add_rewrite_rule()
    • saveDomDocument()
  • Regex POSIX - 23 usa

  • Filtro - 2 usos

    • classe PHPMailer->ValidateAddress() (opcional)
  • FTP - 72 usos

    • classe ftp_base
    • class ftp (versões pure e sockets )
    • classe WP_Filesystem_FTPext
    • classe 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últiplos (opcional - fallback em wp-includes\compat.php )
  • íconev - 5 usos

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

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

    • classe WP_oEmbed->_parse_xml() (opcional)
    • SimplePie
  • String de vários bytes - 29 usos

    • alguns substitutos em wp-includes/compat.php
  • MySQL - 60 usos

    • classe wpdb
    • classe SimplePie_Cache (substituído pela classe WP_Feed_Cache )
  • OpenSSL - 4 usos

    • classe PHPMailer
  • PCRE - 743 usa

  • SimpleXML - 1 usa

    • classe WP_oEmbed (parece opcional)
  • Soquetes - 64 usos

    • classe ftp ( sockets implementation)
  • SPL - 3 usos

  • Tokenizer - 3 usos

    • wp_doc_link_parse() (opcional)
  • XML Parser - 89 usa

  • XMLReader - 1 usa

    • SimplePie (parece opcional)
  • Zlib - 30 usos

por Rarst 13.02.2012 / 20:55
fonte
26

A resposta para isso pode ser complicada e muito longa, até onde eu sei, também haverá algumas diferenças entre servidores & OS (IIS, Apache) .. Eu não posso dizer que a lista a seguir é uma lista completa, mas inclui alguns dos que eu sei que são necessários:

  • Curl e CurlSSL - Não tenho certeza se é NECESSÁRIO mas grande parte do código do WordPress será usado se estiver disponível. Muitos plugins, no entanto, requerem e / ou terão funções limitadas sem ele.

  • Exif - permite que o manipulador de mídia do WordPress extraia dados Exif fora de imagens.

  • Gettext - .o .mo lidando com internacionalização de localização de traduções ..

  • FTP - costumava fazer plug-ins e upgrades do WordPress via FTP.

  • GD - Nenhuma introdução precisa, certo?

  • Iconv - conversões de conjuntos de caracteres para tudo, desde a correspondência até a análise de RSS.

  • Mbregex e Mbstring - o nome é bastante descritivo - fornece funções usadas em todo o lugar: -)

  • Mcrypt - Não é necessário para o wordpress, mas muitos plugins precisam dele.

  • Mímica mágica - Depreciada agora no wordpress - mas ainda é bom ter compatibilidade com versões anteriores.

  • * Mysql e MySQL do sistema * - todos sabemos o que é isso e por que é necessário, não?

  • Openssl - Esta biblioteca é usada para lidar com conexões de processamento criptografado com certificados SSL para o WordPress pode ser capaz de se conectar a qualquer local criptografado SSL (https).

  • POSIX - usado para garantir que o WordPress mantenha adequadamente as permissões e as propriedades dos arquivos.

  • Verificação de informações do caminho - algumas configurações permalink.

  • Pspell - recursos de verificação ortográfica para o TinyMCE,.

  • Soquetes - gerenciando conexões FTP e tratamento de mensagens AKA SMTP e POP no WordPress.

  • Zip - Não tenho certeza se NECESSÁRIO - mas essa classe de criação e extração de arquivos zip compatíveis com plataformas cruzadas SERÁ usada pelo wordpress, se disponível.

  • Zlib - usado em muitos casos. exemplo - compressão de arquivos js e css. novamente, não tenho certeza se REQUERIDO , mas necessário.

Como acima indicado - isso não é de forma alguma uma lista COMPLETA - foi compilado há cerca de um ano - e pode precisar de alguma atualização. Muitas dessas funções não são exatamente REQUERIDAS , mas AVISADAS . Em muitos casos, o wordpress usa uma função IF se estiver disponível e, caso contrário, irá ignorar a tarefa. Um bom exemplo é a falta de biblioteca GD, que não irá impedir que o wordpress funcione, mas não cortará, redimensionará ou alterará as imagens carregadas - deixando assim a opção original (e acinzentada de "tamanho" na "inserção"). imagem para postar "função) ..

Como uma nota lateral - Eu também diria que talvez esta questão provavelmente irá obter respostas mais corretas / atualizadas em serverfault.com do que aqui ...

    
por krembo99 13.02.2012 / 10:27
fonte
12

( Isto não pretende ser uma resposta. Apenas algumas informações úteis. Se você acha que esta informação não é útil, me avise, simplesmente a excluirei.)

Acho que falar em termos de pacotes seria mais fácil para iniciantes, mas como os pacotes variam de sistema para sistema, é difícil cobrir todos eles.

Como tenho experiência com o Debian (e distros baseadas no Debian), gostaria de compartilhar esta informação específica:

  • php5-cli
  • php5-dev
  • php5-fpm
  • php5-cgi
  • php5-mysql
  • php5-xmlrpc
  • php5-curl
  • php5-gd
  • php-apc (não é obrigatório, mas recomendado)
  • php-pear
  • php5-imap
  • php5-mcrypt
  • php5-pspell

Os pacotes acima mencionados instalam todas as extensões / bibliotecas / módulos mencionadas nas outras respostas; todos, exceto o Mime Magic, que é não mais requerido pelo WordPress .

Outra boa maneira de garantir que seu servidor seja 100% compatível com o WordPress é verificar com quais pacotes as empresas de hospedagem gerenciadas vêm pré-instaladas. Como eles têm anos de experiência com reclamações de clientes sobre incompatibilidades, eles saberão melhor.

No caso do Hostgator , os módulos PHP que eles pré-instalam incluem (você provavelmente só precisará < em> mais mas não todos eles):

OMediaTempleforneceumarquivo phpinfo(); para que você verifique sua configuração. É útil para fins de comparação também.

    
por its_me 10.02.2013 / 04:17
fonte
6

Desenvolvi meu verificador de ambientes do WordPress. É uma classe simples, roda na web SAPI ou na CLI. Esta é a versão mantida 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 ) );
    }
}

Baseado no trabalho de @rarst

    
por Szépe Viktor 24.11.2016 / 20:14
fonte
4

Se você quiser uma maneira fácil de verificar se seu servidor atende a esses requisitos, agora há um comando ext WP-CLI útil para faça isso.

wp ext required mostra todas as extensões necessárias do PHP para executar o WordPress, enquanto wp ext recommended mostra as opcionais . wp ext check é uma combinação dos dois comandos.

Eles são úteis quando você precisa de uma maneira rápida de verificar os requisitos do sistema em um novo servidor e / ou se deseja continuar processando essa lista programaticamente.

Veja como o wp ext required funciona:

$ 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
    
por swissspidy 18.01.2018 / 17:12
fonte
3

Se você está usando o Debian 7 (Debian Wheezy), você precisa instalar o próprio PHP e um pequeno número de extensões. A maior parte do que foi mencionado pelo @Rarst já está incluso em uma das instalações básicas do PHP.

PHP

Você tem quatro opções no Debian Wheezy: libapache2-mod-php5 , libapache2-mod-php5filter , php5-cgi ou php5-fpm . Eu escolho php5-fpm mas tudo depende de como você quer que seu servidor web e PHP interajam.

MySQL

Você também precisa do PHP para usar o MySQL. Suas opções são php5-mysql e php5-mysqlnd . php5-mysqlnd é nativo e geralmente mais rápido. Alguns podem escolher uma alternativa como MariaDB.

Biblioteca de Gráficos Opcional

Se você quiser que suas imagens sejam redimensionadas, instale php5-gd ou php5-imagick . O php5-imagick lhe dará melhor qualidade e o Wordpress o utilizará se estiver disponível. Se ambos estiverem instalados, o php5-imagick será usado. Se nenhum dos dois estiver instalado, as imagens não serão redimensionadas (e o Wordpress não reclamará).

HTTP Opcional

Se você instalar o php5-curl , ele será usado, mas não é necessário para nada, exceto talvez melhor desempenho .

Nada mais é exigido pelo Wordpress e pela maioria das extensões, embora algumas extensões possam ter outros requisitos.

Aqui está a linha de instalação básica completa para fornecer ao Wordpress tudo o que é necessário para um desempenho ideal e nada que não seja necessário:

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

Uma pequena "cheatsheet" ao instalar o PHP para Wordpress no Debian:

0. Adicione o repositório dotdeb

Adicione estas duas linhas ao seu arquivo /etc/apt/sources.list :

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

Adicione a chave GPG:

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

Atualize a "lista de pacotes":

sudo apt-get update

1. Instalar o PHP 7:

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

Fonte: enlace

2. Lista de módulos incluídos no pacote "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

Fonte: enlace

3. Para instalar os módulos adicionais necessários / recomendados pelo wordpress:

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

Fonte: enlace

4. Eu não consegui encontrar o seguinte no debian:

Openssl
Path Info Check
Zlib

5. "apt-cache search php7" retorna:

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

Referência: enlace

    
por JedatKinports 20.03.2017 / 10:57
fonte
0

você precisa das extensões mysqli, pdo e gd. e às vezes xml-rpc.

Eu tenho rodado o WP com a extensão nativa mysqlnd por um tempo agora, é bem legal. Tem reflexos embutidos, então se você quiser ver o que está acontecendo com o banco de dados nesse pedido específico, você pode fazê-lo.

zip como uma extensão não é necessária, a maioria dos programas chama o executável zip do sistema.

    
por Vid Luther 13.02.2012 / 16:10
fonte

Tags