Codex 在服务器要求中仅宽松地提到了PHP版本,但是PHP可以在广泛的范围内进行配置,以排除/包括不同部分。
什么是扩展/库:
- WP完全需要工作吗?MySQL的...
- 需要特定功能吗?GD?...
- 最好用于特定功能的最佳操作?卷曲...
- 插件常用的?压缩...
Codex 在服务器要求中仅宽松地提到了PHP版本,但是PHP可以在广泛的范围内进行配置,以排除/包括不同部分。
什么是扩展/库:
Answers:
我对此进行了更多考虑,并根据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()
(可选)多字节字符串 -29个用途
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个用途
据我所知,答案可能很复杂而且很长,据我所知,服务器与操作系统(IIS,Apache)之间也会有一些区别。.我不能说以下列表是完整列表,但它包括我知道其中一些是必需的:
Curl和CurlSSL –不确定是否需要,但是如果可用,许多WordPress代码将使用它。但是,许多插件确实需要它,并且/或者如果没有它,它们的功能将受到限制。
Exif –允许WordPress的媒体处理程序从图像中提取Exif数据。
Gettext -.po .mo处理翻译本地化国际化..
FTP –用于通过FTP进行插件和WordPress升级。
GD –无需介绍,对吧?
Iconv –从邮件到RSS解析的所有字符集转换。
Mbregex和Mbstring-名称很具描述性-提供了在各处使用的功能:-)
Mcrypt – WordPress不需要,但是许多插件确实需要它。
Mime Magic –现在在wordpress中已弃用–但仍具有良好的向后兼容性。
* Mysql和系统的Mysql * –我们都知道这是什么以及为什么需要它,不是吗?
Openssl –此库用于处理使用SSL证书加密的处理连接,WordPress可能能够连接到任何SSL(https)加密位置。
POSIX –用于确保WordPress正确维护文件权限和所有权。
路径信息检查 -一些永久链接设置。
Pspell – TinyMCE的拼写检查功能。
套接字 –在WordPress中管理FTP连接和邮件处理AKA SMTP和POP。
Zip –不确定是否需要-但此跨平台兼容的zip文件创建和提取类将由wordpress使用(如果可用)。
Zlib –在许多情况下使用。示例-js和css文件压缩。同样,不确定是否需要,但是否需要。
就像上面所说的-这绝不是完整的列表-它是大约一年前编译的,可能需要进行一些更新。这些功能中的许多功能不是完全必需的,而是建议使用的。在许多情况下,如果可用,wordpress会使用功能,如果没有,则会忽略该任务。一个很好的例子是缺少GD库,它不会停止wordpress的运行,但不会裁剪,调整大小或更改上传的图像-因此将原始图像(并在“插入”中保留“ size”选项为灰色)图片发布”功能。。
附带说明-我也要说,也许这个问题在serverfault.com上比在这里可能会得到更多正确/更新的答案...
(这并不是要回答。只是一些有用的信息。如果您认为此信息没有用,请告诉我,我将其删除。)
我认为,对于新手来说,使用软件包进行交谈会更容易,但是由于软件包因系统而异,因此很难涵盖所有软件包。
根据我对Debian(及基于Debian的发行版)的经验,我想分享以下特定信息:
上述软件包安装了其他答案中提到的所有扩展/库/模块;除了Mime Magic之外,所有内容都不再需要WordPress了。
确保您的服务器与WordPress 100%兼容的另一种好方法是检查托管主机公司预装了哪些软件包。由于他们在客户抱怨不兼容方面拥有多年的经验,因此他们会更好地了解。
在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安装之一中。
的PHP
Debian Wheezy中有四个选项:libapache2-mod-php5,libapache2-mod-php5filter,php5-cgi或php5-fpm。我选择php5-fpm,但这完全取决于您希望Web服务器和PHP交互的方式。
的MySQL
您还需要PHP才能使用MySQL。您的选择是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上安装PHP for Wordpress时的一个小“备忘单”:
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 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搜索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 –用于检测文件上传的模仿类型
- mod_xml –用于生成XML,例如用于XML网站地图。请注意,mod_xml是Apache模块,而不是PHP扩展,但出于了解目的而列出。
- 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已有一段时间了,它非常简洁。内置了反射功能,因此,如果您想查看特定请求中数据库的运行状况,可以执行此操作。
不需要zip作为扩展名,大多数程序都调用系统zip可执行文件。