PHP ส่วนขยายและไลบรารี WP ต้องการและ / หรือใช้คืออะไร


79

Codex เพียงกล่าวถึงรุ่น PHP ในความต้องการของเซิร์ฟเวอร์อย่างอิสระแต่ PHP สามารถกำหนดค่าในการยกเว้น / รวมถึงส่วนต่างๆที่หลากหลาย

ส่วนขยาย / ไลบรารีคืออะไร:

  1. จำเป็นสำหรับ WP ในการทำงานหรือไม่ MySQL ...
  2. จำเป็นสำหรับฟังก์ชั่นเฉพาะหรือไม่ GD? ...
  3. ที่ต้องการสำหรับการทำงานที่ดีที่สุดของฟังก์ชั่นเฉพาะ ม้วน ...
  4. มีการใช้งานบ่อยโดยปลั๊กอิน? Zip ...

คุณทราบหรือไม่ว่ามีข้อผิดพลาด SSL ในเว็บไซต์ของคุณ ( queryposts.com )
ฉันเป็นคนที่โง่ที่สุด

@IamtheMostStupidPerson ขอขอบคุณการต่ออายุใบรับรองอัตโนมัติล้มเหลวด้วยเหตุผลบางอย่างควรได้รับการแก้ไขแล้ว
Rarst

ไม่ต้องกังวลมันมาเข้ารหัสกันเถอะ ไม่ได้? ฉันคิดว่ามันจะต่ออายุอัตโนมัติ ... ในกรณีที่กรณีของคุณไม่ได้ต่ออายุโดยอัตโนมัติเราจะทำอย่างไร
ฉันเป็นคนที่โง่ที่สุด

@IamtheMostStupidPerson การสนับสนุนโฮสติ้งได้รีเซ็ต (เป็นการตั้งค่าผ่านการรวมระบบ) โดยปกติจะต่ออายุโดยอัตโนมัติสำหรับฉัน
Rarst

หายากมาก แต่มีคำแนะนำอย่างเป็นทางการ: make.wordpress.org/hosting/handbook/handbook/server-environment/ …
aidanh010

คำตอบ:


90

ฉันให้ความคิดนี้มากขึ้นและขนาดที่กำหนดของรหัสฐาน WP (รวมถึงไลบรารีที่รวมอยู่ด้วย) ดูเหมือนจะไม่สมจริงมากที่จะรวบรวมรายการดังกล่าวด้วยมือ (และทำซ้ำสำหรับทุกเวอร์ชันใหม่ - meh)

ฉันค้นหาเครื่องมือวิเคราะห์รหัสคงที่ที่เหมาะสม - PHP_CompatInfoและหลังจากการสร้างส่วนขยายที่รายงานโดยส่วนขยายที่ใช้โดย core (รุ่นที่สแกน 3.3.1):

  • cURL - ใช้ 127 ครั้ง (ต้องใช้libcurl )

    • HTTP API (คลาสWP_Http_curl)
    • url_is_accessable_via_ssl()
    • SimplePie (แทนที่ด้วยคลาสWP_SimplePie_File)
    • GoogleSpell (จากแพ็คเกจ TinyMCE ไม่ได้ใช้?)
  • วันที่ / เวลา - 367 การใช้งาน

  • การใช้ DOM - 6 (ต้องการlibxml )

    • iis7_rewrite_rule_exists()
    • iis7_delete_rewrite_rule()
    • iis7_add_rewrite_rule()
    • saveDomDocument()
  • POSIX Regex - 23 ครั้ง

  • ตัวกรอง - ใช้ 2 ครั้ง

    • ชั้นPHPMailer->ValidateAddress()(ไม่จำเป็น)
  • FTP - 72 การใช้งาน

    • ชั้น ftp_base
    • class ftp( เวอร์ชันpureและsockets )
    • ชั้น WP_Filesystem_FTPext
    • ชั้น WP_Filesystem_ftpsockets
  • GD - 56 ใช้

    • wp-admin\includes\image-edit.php
    • wp-admin\includes\image.php
    • wp-includes\media.php
  • ใช้ Hash - 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()(ไม่จำเป็น)
    • SimplePie
  • Multibyte String - 29 การใช้งาน

    • ทางเลือกบางอย่างใน wp-includes/compat.php
  • ใช้ MySQL - 60

    • ชั้น wpdb
    • classSimplePie_Cache (แทนที่ด้วย class WP_Feed_Cache)
  • OpenSSL - 4 การใช้งาน

    • ชั้น PHPMailer
  • PCRE - 743 ใช้

  • SimpleXML - 1 รายการใช้

    • ชั้นเรียนWP_oEmbed(ดูเหมือนไม่จำเป็น)
  • Sockets - 64 การใช้งาน

    • คลาสftp( socketsการนำไปใช้)
  • SPL - 3 การใช้งาน

  • Tokenizer - 3 การใช้งาน

    • wp_doc_link_parse() (ไม่จำเป็น)
  • XML Parser - 89 ใช้

  • XMLReader - 1 การใช้งาน

    • SimplePie (ดูเหมือนเป็นทางเลือก)
  • Zlib - ประโยชน์ 30 ข้อ


4
ทรัพยากรที่ดีเยี่ยม โชคดีที่ส่วนขยายและไลบรารีด้านบนส่วนใหญ่จะถูกรวบรวมตามค่าเริ่มต้นด้วย PHP 5.2.4 และสูงกว่า
Chris_O

@Chris_O ตราบใดที่มีการปฏิบัติตามค่าเริ่มต้น ... มีการกล่าวกันหลายครั้งโดยทีมงานหลักว่ามีการกำหนดค่า PHP ที่แปลกประหลาดอยู่ในนั้น สิ่งที่ทำให้คำถามนี้จากตัวฉันเองคือการซื้อ VPS ในที่ทำงานจากผู้ให้บริการโฮสติ้งรายใหม่และคาดว่าจะมีการกำหนดค่าน้อยที่สุด มันจะสะดวกกว่าที่จะให้การสนับสนุนกับรายการตรวจสอบส่วนขยายดังกล่าวจากนั้นค้นหาและขอให้ติดตั้งทีละรายการ
Rarst

lib ใดที่ใช้เพื่อคลายซิปธีมและปลั๊กอิน?
jgraup

1
@jgraup ZipArchive หรือ PclZip ดูฟังก์ชั่นการเปิดเครื่องรูดที่เกี่ยวข้องqueryposts.com/?s=unzip_file
Rarst

1
ด้วย v4.7 และรูปขนาดย่อ PDF พื้นเมืองใหม่ / ตัวอย่างเซิร์ฟเวอร์ของคุณต้องการการสนับสนุน Imagick, ImageMagick และ Ghostscript
j08691

26

คำตอบสำหรับเรื่องนี้อาจมีความซับซ้อนและยาวมากเท่าที่ฉันรู้จะมีความแตกต่างระหว่างเซิร์ฟเวอร์และระบบปฏิบัติการ (IIS, Apache) .. ฉันไม่สามารถพูดได้ว่ารายการต่อไปนี้เป็นรายการที่สมบูรณ์ แต่มันรวมถึง บางคนที่ฉันรู้ว่าจำเป็นต้องใช้:

  • Curl and CurlSSL - ไม่แน่ใจว่าจำเป็นแต่ส่วนใหญ่ของรหัสเวิร์ดเพรสจะใช้หากมี ปลั๊กอินจำนวนมากอย่างไรก็ตามจำเป็นต้องใช้มันและ / หรือจะมีฟังก์ชั่น จำกัด โดยไม่มีมัน

  • Exif - อนุญาตให้ตัวจัดการสื่อของ WordPress ดึงข้อมูล Exif ออกจากรูปภาพ

  • Gettext - .po .mo จัดการการแปลเป็นภาษาสากลให้เป็นภาษาท้องถิ่น ..

  • FTP - ใช้เพื่ออัปเกรดปลั๊กอินและ WordPress ผ่าน FTP

  • GD - ไม่จำเป็นต้องมีการแนะนำใช่มั้ย

  • Iconv - การแปลงชุดอักขระสำหรับทุกสิ่งตั้งแต่เมลไปจนถึงการแยกวิเคราะห์ RSS

  • Mbregex และ Mbstring - ชื่อนี้ค่อนข้างสื่อความหมาย - จัดเตรียมฟังก์ชั่นที่ใช้ทั่วสถานที่ :-)

  • Mcrypt - ไม่จำเป็นสำหรับ WordPress แต่มีปลั๊กอินจำนวนมากที่ต้องการ

  • Mime Magic - เลิกใช้แล้วใน wordpress - แต่ก็ยังดีสำหรับความเข้ากันได้ด้านหลัง

  • * Mysql และ Mysql ของระบบ * - เราทุกคนรู้ว่านี่คืออะไรและทำไมมันจำเป็นต้องมีไม่?

  • Openssl - ไลบรารีนี้ใช้สำหรับจัดการการเชื่อมต่อการประมวลผลที่เข้ารหัสด้วยใบรับรอง SSL สำหรับ WordPress อาจสามารถเชื่อมต่อกับตำแหน่งที่เข้ารหัส SSL (https) ใด ๆ

  • POSIX - ใช้เพื่อให้แน่ใจว่า WordPress ดูแลสิทธิ์ของไฟล์และการเป็นเจ้าของอย่างถูกต้อง

  • ตรวจสอบข้อมูลเส้นทาง - ตั้งค่าความคิดเห็นบางส่วน

  • Pspell - ความสามารถในการตรวจสอบการสะกดเพื่อ TinyMCE,

  • Sockets - การจัดการการเชื่อมต่อ FTP และการจัดการจดหมาย AKA SMTP และ POP ใน WordPress

  • Zip - ไม่แน่ใจว่าต้องการหรือไม่ แต่การสร้างไฟล์ zip ที่เข้ากันได้ข้ามแพลตฟอร์มนี้และคลาสการแยกจะใช้ wordpress หากมี

  • Zlib - ใช้ในหลายกรณี ตัวอย่าง - การบีบอัดไฟล์ js และ css อีกครั้งไม่แน่ใจว่าจำเป็นแต่จำเป็นต้องใช้

เหมือนที่ระบุไว้ข้างต้น - นี่ไม่ได้หมายความว่ารายการทั้งหมด - มันถูกรวบรวมประมาณหนึ่งปีที่ผ่านมา - และอาจต้องมีการอัพเดท หลายฟังก์ชั่นเหล่านั้นไม่ได้ต้องการอย่างแน่นอนแต่แนะนำให้ใช้ ในหลาย ๆ กรณี wordpress จะใช้ฟังก์ชั่นถ้ามันมีอยู่และถ้าไม่จะละเว้นงาน ตัวอย่างที่ดีคือการขาดห้องสมุด GD มันจะไม่หยุด wordpress จากการทำงาน แต่จะไม่ครอบตัดปรับขนาดหรือแก้ไขภาพที่อัปโหลด - ดังนั้นปล่อยให้ดั้งเดิม (และ grey - out ตัวเลือก "ขนาด" ใน "แทรก" ฟังก์ชั่นภาพเพื่อโพสต์ ")

ในฐานะที่เป็นหมายเหตุด้าน - ฉันจะบอกว่าบางทีคำถามนี้อาจจะได้รับคำตอบที่ถูกต้อง / ปรับปรุงเพิ่มเติมบน serverfault.com กว่าที่นี่ ...


เหตุใดจึงไม่มีข้อมูลนี้บนเว็บไซต์ Wordpress
Tadej

13

( นี่ไม่ได้มีไว้เพื่อเป็นคำตอบเพียงแค่ข้อมูลที่มีประโยชน์หากคุณคิดว่าข้อมูลนี้ไม่มีประโยชน์โปรดแจ้งให้เราทราบฉันจะลบทิ้ง)

ฉันคิดว่าการพูดคุยในแง่ของแพคเกจจะง่ายขึ้นสำหรับมือใหม่ แต่เนื่องจากแพ็คเกจแตกต่างกันไปในแต่ละระบบจึงยากที่จะครอบคลุมทั้งหมด

เนื่องจากฉันมีประสบการณ์เกี่ยวกับ Debian (& Distros ที่ใช้เดเบียน) ฉันต้องการแบ่งปันข้อมูลเฉพาะนี้:

  • php5-CLI
  • php5-dev
  • php5-FPM
  • php5-cgi
  • php5-MySQL
  • php5-XMLRPC
  • php5 ขด
  • php5-GD
  • php-apc (ไม่จำเป็น แต่แนะนำ)
  • PHP ลูกแพร์
  • php5-IMAP
  • php5-Mcrypt
  • php5-pspell

แพ็คเกจดังกล่าวติดตั้งส่วนขยาย / ไลบรารี / โมดูลทั้งหมดที่กล่าวถึงในคำตอบอื่น ๆ ทั้งหมดยกเว้น Mime เมจิกซึ่งเป็นที่ไม่จำเป็นโดย WordPress

อีกวิธีที่ดีในการทำให้แน่ใจว่าเซิร์ฟเวอร์ของคุณสามารถทำงานร่วมกับ WordPress ได้ 100% คือการตรวจสอบแพ็คเกจที่บริษัท โฮสติ้งที่จัดการจัดการติดตั้งมาให้ เนื่องจากพวกเขามีประสบการณ์หลายปีกับการร้องเรียนของลูกค้าเกี่ยวกับความไม่เข้ากันพวกเขาจะรู้ดีกว่า

ในกรณีของ Hostgatorโมดูล PHP ที่พวกเขาติดตั้งล่วงหน้ารวมถึง (คุณอาจจะต้องการมากที่สุดแต่ไม่ใช่ทั้งหมด):

โมดูล PHP ที่ติดตั้งล่วงหน้าโดย Hostgator

Media Temple ให้phpinfo();ไฟล์สำหรับคุณเพื่อตรวจสอบการกำหนดค่าของพวกเขา มันมีประโยชน์สำหรับการเปรียบเทียบด้วย


WP ต้องการ php5-cli, php5-dev, (php5-fpm && php5-cgi), php5-pear, php5-imap และ php5-pspell ได้อย่างไร วิธีการของคุณดูเหมือนจะติดตั้งทุกอย่างและมันก็แย่ ตามแนวคิดที่ว่าคุณควรเลียนแบบสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันหากคุณสามารถควบคุมการติดตั้งได้ นอกจากนี้คุณควรเลือกวิธีหนึ่งในการรัน PHP (FastCGI หรือ CGI) แต่ไม่ใช่ทั้งสองวิธี

นอกจากเวอร์ชั่น (php5) นี่เป็นคำตอบที่ดีที่สุดที่นี่ .. คำถามไม่ได้ระบุว่า "อะไรสำหรับ" เพียงแค่ "ซึ่ง" โมดูล โหวตแล้ว!
GerardJP

8

หากคุณต้องการวิธีที่ง่ายในการตรวจสอบว่าเซิร์ฟเวอร์ของคุณตรงตามข้อกำหนดเหล่านี้ตอนนี้มีคำสั่ง WP-CLI extที่ใช้งานได้ง่าย

wp ext requiredแสดงให้เห็นถึงส่วนขยาย PHP ทั้งหมดที่จำเป็นในการเรียกใช้ WordPress ในขณะที่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

7

ฉันได้พัฒนาตัวตรวจสอบสภาพแวดล้อม WordPress ของฉันแล้ว มันเป็นคลาสที่เรียบง่ายทำงานบนเว็บ 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


3

หากคุณใช้ Debian 7 (Debian Wheezy) คุณจะต้องติดตั้ง PHP และส่วนขยายจำนวนเล็กน้อย ที่สุดของสิ่งที่ถูกกล่าวถึงโดย @Rarst รวมอยู่ในหนึ่งในการติดตั้ง PHP พื้นฐานที่สุดของ Debian

PHP

คุณมีสี่ตัวเลือกใน Debian ดังเสียงฮืด ๆ : libapache2-mod-php5 , libapache2-mod-php5filter , php5-cgiหรือphp5-FPM ฉันเลือก php5-fpm แต่ทุกอย่างขึ้นอยู่กับว่าคุณต้องการให้เว็บเซิร์ฟเวอร์และ 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

2

เป็นมูลค่าการกล่าวขวัญว่าตั้งแต่ WordPress 5.2 มีคุณสมบัติในตัวที่รายงานเกี่ยวกับโมดูลที่หายไป ค้นหาได้ที่เครื่องมือ> สุขภาพเว็บไซต์


1

"cheatsheet" ขนาดเล็กเมื่อติดตั้ง PHP สำหรับ Wordpress บน Debian:

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. ฉันไม่พบสิ่งต่อไปนี้เกี่ยวกับเดเบียน:

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

การอ้างอิง: https://packages.debian.org/source/sid/php7.0


1

WordPress คู่มือในขณะนี้แสดงที่แนะนำ PHP โมดูล:

WordPress ใช้ประโยชน์จากส่วนขยายของ PHP หากส่วนขยายที่ต้องการหายไป WordPress จะต้องทำงานมากกว่านี้เพื่อทำงานตามที่โมดูลช่วยด้วยหรือในกรณีที่แย่ที่สุดจะลบการทำงานออก ดังนั้นจึงขอแนะนำให้ใช้ส่วนขยาย PHP ตามรายการด้านล่าง

  • bcmath - ใช้เพื่อปรับปรุงประสิทธิภาพของการคำนวณทางคณิตศาสตร์
  • curl - ดำเนินการตามคำขอระยะไกล
  • exif - ทำงานร่วมกับข้อมูลเมตาที่เก็บไว้ในภาพ
  • ตัวกรอง - ใช้สำหรับการกรองอินพุตของผู้ใช้อย่างปลอดภัย
  • fileinfo - ใช้เพื่อตรวจจับ mimetype ของการอัพโหลดไฟล์
  • mod_xml - ใช้สำหรับสร้าง XML เช่นแผนผังเว็บไซต์ XML โปรดทราบว่า mod_xml เป็นโมดูล Apache ไม่ใช่ส่วนขยาย PHP แต่อยู่ในรายการเพื่อรับรู้
  • mysqli - เชื่อมต่อกับ MySQL สำหรับการโต้ตอบของฐานข้อมูล
  • libsodium - สร้างไบต์สุ่ม
  • openssl - อนุญาตการเชื่อมต่อที่ใช้ SSL กับโฮสต์อื่น
  • pcre - เพิ่มประสิทธิภาพของการจับคู่รูปแบบในการค้นหารหัส
  • imagick - ให้คุณภาพของภาพที่ดีขึ้นสำหรับการอัปโหลดสื่อ ดู WP_Image_Editor กำลังเข้ามา! สำหรับรายละเอียด การปรับขนาดภาพที่ชาญฉลาดขึ้น (สำหรับรูปภาพขนาดเล็ก) และการสนับสนุนรูปขนาดย่อ PDF เมื่อ Ghost Script ยังมี
  • xml - ใช้สำหรับการแยกวิเคราะห์ XML เช่นจากเว็บไซต์บุคคลที่สาม

นอกจากนี้ยังแสดงส่วนขยาย PHP ต่อไปนี้เป็นทางเลือก:

  • gd - หากไม่ได้ติดตั้ง Imagick ไลบรารีกราฟิกของ GD จะใช้เป็นทางเลือกที่ จำกัด สำหรับการจัดการรูปภาพ
  • mcrypt - สร้างไบต์สุ่มเมื่อ libsodium ไม่สามารถใช้ได้
  • xmlreader - ใช้สำหรับการแยกวิเคราะห์ XML
  • zlib - การบีบอัดและคลายการบีบอัด Gzip

อืมฉันสงสัยว่าmod_xmlจะทำอย่างไรกับสิ่งใดตั้งแต่หลักไม่ใช้แผนผังไซต์ XML หรือเชื่อมโยงกับการทำงานบนเว็บเซิร์ฟเวอร์เฉพาะ
Rarst

0

คุณต้องการนามสกุล mysqli, pdo และ gd และบางครั้ง xml-rpc

ฉันใช้ WP กับนามสกุลของ mysqlnd มาระยะหนึ่งแล้วมันก็ค่อนข้างเรียบร้อย มีสิ่งที่สะท้อนอยู่ภายในดังนั้นหากคุณต้องการดูว่าเกิดอะไรขึ้นกับ db ในคำขอเฉพาะนั้นคุณสามารถทำได้

zip เนื่องจากไม่จำเป็นต้องมีส่วนขยายส่วนใหญ่โปรแกรมจะเรียกใช้ไฟล์ zip ได้


2
WP ไม่ใช้เลเยอร์ PDO อาจมีปลั๊กอินที่ช่วยให้คุณทำเช่นนี้ได้ แต่ API ฐานข้อมูลของ WP ยังคงมาจากสมัยโบราณของ PHP ...
onetrickpony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.