تثبيت الإضافات
ملاحظة
على عكس وضع التشغيل مع 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)
- استخدام
apt-cache searchللبحث عن حزمة الإضافة~# apt-cache search memcached php php-apc - APC (Alternative PHP Cache) module for PHP 5 php5-memcached - memcached module for php5 - استخدام
apt-get installلتثبيت حزمة الإضافة~# apt-get install -y php5-memcached Reading package lists... Done Reading state information... Done ...
طريقة تثبيت إضافات PHP عبر yum في أنظمة مثل centos
- استخدام
yum searchللبحث عن حزمة الإضافة~# yum search memcached php php-pecl-memcached - memcached module for php5 - استخدام
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 لتثبيت الإضافات.
- تثبيت باستخدام
pecl install~# pecl install memcached downloading memcached-2.2.0.tgz ... Starting to download memcached-2.2.0.tgz (70,449 bytes) .... - تكوين php.ini
يمكنك البحث عن موقع ملف php.ini عبر تشغيل php --ini، ثم إضافة extension=memcached.so في الملف.
الطريقة الثالثة، التثبيت من خلال تجميع المصدر (عادةً لتثبيت الإضافات المدمجة في PHP، كمثال تثبيت إضافة pcntl)
- استخدم الأمر
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 - حسب الإصدار، قم بتنزيل شفرة مصدر PHP
صفحة تحميل النسخ التاريخية لـ PHP: https://php.net/releases/
- فك ضغط حزمة الشفرة المصدرية
على سبيل المثال، إذا كان اسم الحزمة المضغوطة هو 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/
...
- انتقل إلى الدليل ext/pcntl في الشفرة المصدرية
~# cd php-5.3.29/ext/pcntl/ - قم بتشغيل الأمر
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 - قم بتشغيل الأمر
configure~# ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E ... - قم بتشغيل الأمر
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... ... - قم بتشغيل الأمر
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ - تكوين ملف 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 مثبتة):
- قم بتنزيل حزمة ملف إضافة 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
....
-
انتقل إلى دليل الشفرة المصدرية
~# cd libevent-0.1.0/ -
قم بتشغيل الأمر
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 -
قم بتشغيل الأمر
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 ... -
قم بتشغيل الأمر
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 ... -
قم بتشغيل الأمر
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ -
تكوين ملف ini
ابحث عن موقع ملف php.ini عبر تشغيل php --ini، ثم أضف extension=libevent.so في الملف.