تثبيت الإضافات

ملاحظة

على عكس وضع التشغيل مع Apache+PHP أو Nginx+PHP، فإن Workerman يعمل على أساس PHP CLI من خلال سطر الأوامر، ويستخدم تنفيذ PHP مختلف، وقد يكون ملف php.ini المستخدم مختلفًا أيضًا. لذا فإن رؤية إضافة مثبتة عند طباعة phpinfo() في صفحة ويب لا تعني بالضرورة أن نفس الإضافة مثبتة أيضًا في PHP CLI.

كيفية تحديد الإضافات المثبتة في PHP CLI

لتحديد الإضافات المثبتة في PHP CLI، يمكنك تشغيل الأمر php -m والذي سيقوم بإدراج الإضافات المثبتة، ستكون النتيجة مشابهة لما يلي:

~# php -m
[PHP Modules]
event
posix
pcntl
...

كيفية تحديد موقع ملف php.ini الخاص بـ PHP CLI

عند تثبيت الإضافات، قد تحتاج إلى تكوين ملف php.ini يدويًا لإضافة الإضافة، لذا من الضروري التأكد من موقع ملف php.ini الخاص بـ PHP CLI. يمكنك تشغيل الأمر php --ini للبحث عن موقع ملف ini الخاص بـ PHP CLI، وستكون النتيجة مشابهة لما يلي (قد تختلف النتائج بناءً على الأنظمة):

~# php --ini
Configuration File (php.ini) Path: /etc/php8/cli
Loaded Configuration File:         /etc/php8/cli/php.ini
Scan for additional .ini files in: /etc/php8/cli/conf.d
Additional .ini files parsed:      /etc/php8/cli/conf.d/apc.ini,
/etc/php8/cli/conf.d/pdo.ini,
/etc/php8/cli/conf.d/pdo_mysql.ini
...

تثبيت الإضافات لـ PHP CLI (على سبيل المثال تثبيت إضافة memcached)

الطريقة الأولى، استخدام أمر apt أو yum للتثبيت

إذا تم تثبيت PHP من خلال أوامر apt أو yum، يمكن تثبيت الإضافات أيضًا باستخدام apt أو yum.

طريقة تثبيت إضافات PHP عبر apt في أنظمة مثل debian/ubuntu (يجب على المستخدمين غير الجذر إضافة أمر sudo)

  1. استخدام apt-cache search للبحث عن حزمة الإضافة
    ~# apt-cache search memcached php
    php-apc - APC (Alternative PHP Cache) module for PHP 5
    php5-memcached - memcached module for php5
  2. استخدام apt-get install لتثبيت حزمة الإضافة
    ~# apt-get install -y php5-memcached
    Reading package lists... Done
    Reading state information... Done
    ...

طريقة تثبيت إضافات PHP عبر yum في أنظمة مثل centos

  1. استخدام yum search للبحث عن حزمة الإضافة
    ~# yum search memcached php
    php-pecl-memcached - memcached module for php5
  2. استخدام yum install لتثبيت حزمة الإضافة
    ~# yum install -y php-pecl-memcached
    Reading package lists... Done
    Reading state information... Done
    ...

    ملاحظة:

تثبيت إضافات PHP باستخدام apt أو yum سيقوم تلقائيًا بتكوين ملف php.ini، مما يجعل الاستخدام سهلاً للغاية. العيب هو أن بعض الإضافات قد لا تكون متاحة كحزم تثبيت في apt أو yum.

الطريقة الثانية، استخدام pecl للتثبيت

استخدم الأمر pecl install لتثبيت الإضافات.

  1. تثبيت باستخدام pecl install
    ~# pecl install memcached
    downloading memcached-2.2.0.tgz ...
    Starting to download memcached-2.2.0.tgz (70,449 bytes)
    ....
  2. تكوين php.ini

يمكنك البحث عن موقع ملف php.ini عبر تشغيل php --ini، ثم إضافة extension=memcached.so في الملف.

الطريقة الثالثة، التثبيت من خلال تجميع المصدر (عادةً لتثبيت الإضافات المدمجة في PHP، كمثال تثبيت إضافة pcntl)

  1. استخدم الأمر php -v للتحقق من إصدار PHP CLI الحالي
    ~# php -v
    PHP 5.3.29-1~dotdeb.0 with Suhosin-Patch (cli) (built: Aug 14 2014 19:55:20)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
  2. حسب الإصدار، قم بتنزيل شفرة مصدر PHP

صفحة تحميل النسخ التاريخية لـ PHP: https://php.net/releases/

  1. فك ضغط حزمة الشفرة المصدرية

على سبيل المثال، إذا كان اسم الحزمة المضغوطة هو php-5.3.29.tar.gz

~# tar -zxvf php-5.3.29.tar.gz
php-5.3.29/
php-5.3.29/README.WIN32-BUILD-SYSTEM
php-5.3.29/netware/
...
  1. انتقل إلى الدليل ext/pcntl في الشفرة المصدرية
    ~# cd php-5.3.29/ext/pcntl/
  2. قم بتشغيل الأمر phpize
    ~# phpize
    Configuring for:
    PHP Api Version:         20090626
    Zend Module Api No:      20090626
    Zend Extension Api No:   220090626
  3. قم بتشغيل الأمر configure
    ~# ./configure
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    ...
  4. قم بتشغيل الأمر make
    ~# make
    /bin/bash /tmp/php-5.3.29/ext/pcntl/libtool --mode=compile cc ...
    -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend...
    ...
  5. قم بتشغيل الأمر make install
    ~# make install
    Installing shared extensions:     /usr/lib/php5/20090626/
  6. تكوين ملف ini

ابحث عن موقع ملف php.ini عبر تشغيل php --ini، ثم أضف extension=pcntl.so في الملف.

ملاحظة:
تُستخدم هذه الطريقة عادةً لتثبيت الإضافات المدمجة في PHP، مثل إضافتي posix و pcntl. بالإضافة إلى استخدام phpize لتجميع إضافة معينة، يمكنك إعادة تجميع PHP بالكامل وإضافة الإضافات أثناء التجميع، على سبيل المثال من خلال تشغيل

~# ./configure --enable-pcntl --enable-posix ...
~# make && make install

الطريقة الرابعة، التثبيت عبر phpize

إذا كانت الإضافة التي تحتاجها غير موجودة في دليل ext داخل شفرة مصدر PHP، فستحتاج إلى البحث عنها وتنزيلها من https://pecl.php.net.

كمثال لتثبيت إضافة libevent (على افتراض أن النظام يحتوي على مكتبة libevent-dev مثبتة):

  1. قم بتنزيل حزمة ملف إضافة libevent (يمكنك تنزيلها في أي دليل على النظام الحالي)
    
    ~# wget https://pecl.php.net/get/libevent-0.1.0.tgz
    --2015-05-26 21:43:40--  https://pecl.php.net/get/libevent-0.1.0.tgz
    Resolving pecl.php.net... 104.236.228.160
    Connecting to pecl.php.net|104.236.228.160|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 9806 (9.6K) [application/octet-stream]
    Saving to: “libevent-0.1.0.tgz”

100%[=======================================================>] 9,806 41.4K/s in 0.2s


2. فك ضغط ملف حزمة الإضافة
```shell
~# tar -zxvf libevent-0.1.0.tgz
package.xml
libevent-0.1.0/config.m4
libevent-0.1.0/CREDITS
libevent-0.1.0/libevent.c
....
  1. انتقل إلى دليل الشفرة المصدرية

    ~# cd libevent-0.1.0/
  2. قم بتشغيل الأمر phpize

    ~# phpize
    Configuring for:
    PHP Api Version:         20090626
    Zend Module Api No:      20090626
    Zend Extension Api No:   220090626
  3. قم بتشغيل الأمر configure

    ~# ./configure
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for a sed that does not truncate output... /bin/sed
    checking for cc... cc
    checking whether the C compiler works... yes
    ...
  4. قم بتشغيل الأمر make

    ~# /bin/bash /data/test/libevent-0.1.0/libtool --mode=compile cc  -I. -I/data/test/libevent-0.1.0 -DPHP_ATOM_INC -I/data/test/libevent-0.1.0/include
    ...
  5. قم بتشغيل الأمر make install

    ~# make install
    Installing shared extensions:     /usr/lib/php5/20090626/
  6. تكوين ملف ini

ابحث عن موقع ملف php.ini عبر تشغيل php --ini، ثم أضف extension=libevent.so في الملف.