Codex はサーバー要件でPHPバージョンのみを大まかに言及していますが、PHPはさまざまな部分の除外/包含のかなり広い範囲で構成できます。
拡張機能/ライブラリとは何ですか:
- WPが動作するために必要ですか?MySQL ...
- 特定の機能に必要ですか?GD?...
- 特定の機能を最適に動作させるために推奨されますか?カール...
- プラグインで一般的に使用されていますか?Zip ...
Codex はサーバー要件でPHPバージョンのみを大まかに言及していますが、PHPはさまざまな部分の除外/包含のかなり広い範囲で構成できます。
拡張機能/ライブラリとは何ですか:
回答:
私はこれにもう少し考えを与え、WPコードベース(バンドルライブラリを含む)のサイズを考えて、そのようなリストを手作業でコンパイルすることはあまり現実的ではないようです(そして新しいバージョンごとにそれを繰り返す-meh)。
適切な静的コード分析ツール-PHP_CompatInfoを検索し、コアが使用する拡張機能のレポート(バージョンスキャン3.3.1)に続いて、いくつかの調整を行った後:
WP_Http_curl
)url_is_accessable_via_ssl()
WP_SimplePie_File
)日付/時間 -367回使用
iis7_rewrite_rule_exists()
iis7_delete_rewrite_rule()
iis7_add_rewrite_rule()
saveDomDocument()
POSIX Regex -23使用
フィルター -2回使用
PHPMailer->ValidateAddress()
(オプション)FTP -72使用
ftp_base
ftp
(純粋バージョンとソケットバージョン)WP_Filesystem_FTPext
WP_Filesystem_ftpsockets
GD -56使用
wp-admin\includes\image-edit.php
wp-admin\includes\image.php
wp-includes\media.php
ハッシュ -6回使用
wp-includes\pluggable.php
複数の用途(オプション-のフォールバックwp-includes\compat.php
)iconv -5使用
SimplePie
(オプション)wp_check_invalid_utf8()
(オプション)wp-mail.php
(オプション)JSON -20回使用
wp-includes/compat.php
libxml -4使用
WP_oEmbed->_parse_xml()
(オプション)wp-includes/compat.php
MySQL -60使用
wpdb
SimplePie_Cache
WP_Feed_Cache
)OpenSSL -4使用
PHPMailer
PCRE -743使用
SimpleXML -1使用
WP_oEmbed
(オプションのようです)ソケット -64使用
ftp
(sockets
実装)SPL -3回使用
トークナイザー -3回使用
wp_doc_link_parse()
(オプション)XMLパーサー -89使用
XMLReader -1使用
Zlib -30回使用
これに対する答えは複雑で非常に長いかもしれません。私が知る限り、サーバーとOS(IIS、Apache)の間にもいくつかの違いがあります。次のリストが完全なリストであるとは言えません私が知っているもののいくつかが必要です:
カールとCurlSSL -それがされてわからない必須しかし、それが利用可能な場合はWordPressのコードの多くは、それを使用します。しかし、多くのプラグインはそれを必要とするか、それなしでは機能が制限されます。
Exif – WordPressのメディアハンドラーがExifデータを画像からプルできるようにします。
Gettext -.po .moハンドリング翻訳ローカリゼーション国際化..
FTP – FTP経由でプラグインとWordPressのアップグレードを行うために使用されます。
GD –導入の必要はありませんか?
Iconv –メールからRSS解析までのすべての文字セット変換。
MbregexとMbstring –名前はわかりやすいです -あらゆる場所で使用される機能を提供します:-)
Mcrypt –ワードプレスには必要ありませんが、多くのプラグインには必要です。
Mime Magic –ワードプレスでは非推奨になりましたが、後方互換性のために持っておくと良いでしょう。
* システムのMysqlおよびMysql * –これが何であり、なぜそれが必要なのか知っていますか?
Openssl –このライブラリは、WordPressがSSL(https)暗号化された場所に接続できるように、SSL証明書で暗号化された処理接続を処理するために使用されます。
POSIX – WordPressがファイルのパーミッションと所有権を適切に維持することを保証するために使用されます。
パス情報チェック -いくつかのパーマリンク設定。
Pspell – TinyMCEのスペルチェック機能。
ソケット – WordPressでのFTP接続とメール処理、SMTPおよびPOPの管理。
Zip –必要かどうかはわかりませんが、このクロスプラットフォーム互換のzipファイル作成および抽出クラスは、可能であればwordpressによって使用されます。
Zlib –多くの場合に使用されます。例-jsおよびcssファイルの圧縮。繰り返しますが、必要かどうかはわかりませんが、必要です。
前述のように-これは決して完全なリストではありません-約1年前にコンパイルされたもので、更新が必要な場合があります。これらの関数の多くは、厳密には必須ではありませんが、アドバイスされています。多くの場合、wordpressは利用可能な場合は関数を使用し、利用できない場合はタスクを無視します。良い例はGDライブラリの欠如です。ワードプレスの機能を停止しませんが、アップロードされた画像の切り取り、サイズ変更、変更は行いません。したがって、「挿入」の「サイズ」オプション投稿する画像」機能)。
サイドノートとして-私はまた、おそらくこの質問はおそらくここよりもserverfault.comでより多くの正しい/更新された答えを得ると言うでしょう...
(これは回答を目的としたものではありません。いくつかの有用な情報です。この情報が有用でないと思われる場合はお知らせください。単に削除します。)
パッケージの観点から話をするのは初心者にとっては簡単だと思いますが、パッケージはシステムごとに異なるため、すべてをカバーするのは困難です。
Debian(およびDebianベースのディストリビューション)の経験があるため、この特定の情報を共有したいと思います。
前述のパッケージは、他の回答に記載されているすべての拡張機能/ライブラリ/モジュールをインストールします。すべて。ただし、WordPressで不要になった Mime Magicを除く。
サーバーがWordPressと100%互換性があることを確認するもう1つの良い方法は、管理ホスティング会社がプレインストールされているパッケージを確認することです。彼らは、非互換性に関する顧客からの苦情に長年の経験があるので、彼らはよりよく知っているでしょう。
Hostgatorの場合、プリインストールされているPHPモジュールには次のものが含まれます(おそらく必要なのはそれらのすべてではなく、ほとんどの場合だけです)。
Media Templeは、phpinfo();
設定を確認するためのファイルを提供します。比較の目的にも役立ちます。
サーバーがこれらの要件を満たしているかどうかを簡単に確認する方法が必要な場合は、WP-CLI extコマンドを使用すると便利です。
wp ext required
は、WordPressの実行に必要なすべてのPHP拡張機能をwp ext recommended
示し、オプションの拡張機能を示します。wp ext check
両方のコマンドの組み合わせです。
これらは、新しいサーバーのシステム要件をすばやく確認する必要がある場合や、このリストをプログラムでさらに処理する場合に役立ちます。
仕組み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
WordPress環境チェッカーを開発しました。これは単純なクラスで、Web SAPIまたはCLIで実行されます。これは、メンテナンスされたバージョン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 <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$|\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 ) );
}
}
@rarstの作業に基づく
Debian 7(Debian Wheezy)を使用している場合は、PHP自体と少数の拡張機能をインストールする必要があります。@Rarstによって言及されたもののほとんどは、Debianの最も基本的なPHPインストールの1つにすでに含まれています。
PHP
Debian Wheezyには、libapache2-mod-php5、libapache2-mod-php5filter、php5-cgi、またはphp5- fpmの 4つのオプションがあります。php5-fpmを選択しますが、それはすべて、WebサーバーとPHPの対話方法に依存します。
MySQL
MySQLを使用するにはPHPも必要です。オプションはphp5-mysqlおよびphp5-mysqlndです。php5-mysqlndはネイティブで、一般に高速です。MariaDBのような代替手段を選択する人もいます。
グラフィックライブラリ オプション
画像のサイズを変更する場合は、php5-gdまたはphp5-imagickのいずれかをインストールできます。php5-imagickはより良い品質を提供し、利用可能であればWordpressがそれを使用します。両方がインストールされている場合、php5-imagickが使用されます。どちらもインストールされていない場合、画像のサイズは変更されません(Wordpressから文句は言われません)。
HTTP オプション
php5-curlをインストールすると、それが使用されますが、おそらくパフォーマンスが向上することを除いては何も必要ありません。
一部の拡張機能には他の要件がある場合がありますが、Wordpressおよびほとんどの拡張機能には他に何も必要ありません。
最適なパフォーマンスを得るために必要なすべてをWordpressに提供する完全な基本インストールラインを次に示します。
apt-get install php5-fpm php5-mysqlnd php5-imagick php5-curl
DebianにWordpress用のPHPをインストールするときの小さな「チートシート」:
0. dotdebリポジトリを追加します
/etc/apt/sources.list
ファイルに次の2行を追加します。
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 add 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
Path Info Check
Zlib
5.「apt-cache search php7」は以下を返します。
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
WordPressのハンドブックは今推奨PHPモジュールを示しています。
WordPressコアはPHP拡張機能を使用します。優先拡張子が欠落している場合、WordPressはモジュールが支援するタスクを実行するためにさらに作業を行うか、最悪の場合、機能を削除します。したがって、以下にリストされているPHP拡張機能が推奨されます。
- bcmath –数学計算のパフォーマンスを改善するために使用されます。
- curl –リモート要求操作を実行します。
- exif –画像に保存されているメタデータで動作します。
- filter –ユーザー入力を安全にフィルタリングするために使用されます。
- fileinfo –ファイルのアップロードのmimetypeを検出するために使用されます
- mod_xml – XMLサイトマップなどのXMLの生成に使用されます。mod_xmlはPHP拡張ではなくApacheモジュールですが、認識のためにリストされていることに注意してください。
- mysqli –データベースとの対話のためにMySQLに接続します。
- libsodium –ランダムバイトを生成します。
- openssl –他のホストへのSSLベースの接続を許可します。
- pcre –コード検索でのパターンマッチングのパフォーマンスが向上します。
- imagick –メディアアップロードの画質を向上させます。WP_Image_Editorがやってくる!詳細については。Ghostスクリプトも利用可能な場合、よりスマートな画像サイズ変更(より小さな画像の場合)およびPDFサムネイルのサポート。
- xml –サードパーティのサイトなどからのXML解析に使用されます。
また、以下のPHP拡張機能がオプションであるとリストしています。
- gd – Imagickがインストールされていない場合、GDグラフィックライブラリは画像操作の機能制限フォールバックとして使用されます。
- mcrypt – libsodiumが利用できない場合、ランダムなバイトを生成します。
- xmlreader – XML解析に使用されます。
- zlib – Gzip圧縮および解凍。
mod_xml
コアはXMLサイトマップを実装していないか、特定のWebサーバーでの実行に関連付けられていないため、何と関係があるのでしょうか。
mysqli、pdo、およびgd拡張機能が必要です。時にはxml-rpc。
私はしばらくの間、mysqlndネイティブ拡張を使用してWPを実行してきましたが、それはかなりきれいです。リフレクション機能が組み込まれているため、その特定のリクエストのdbで何が起こっているかを確認したい場合は、それを実行できます。
拡張子としてのzipは必要ありません。ほとんどのプログラムはシステムのzip実行可能ファイルを呼び出します。