এক্সটেনশন ইনস্টল করা
সাবধানতা
Apache+PHP বা Nginx+PHP এর চলমান মডেলের তুলনায়, Workerman হল PHP কমান্ড লাইন উপর ভিত্তি করে PHP CLI চলমান, যা ভিন্ন PHP কার্যকর প্রোগ্রাম ব্যবহার করে এবং ব্যবহৃত php.ini ফাইলও ভিন্ন হতে পারে। তাই যদি আপনার ওয়েবপেজে phpinfo() চালানোর মাধ্যমে একটি নির্দিষ্ট এক্সটেনশন ইনস্টল করা থাকে, তাহলে তার মানে এই নয় যে কমান্ড লাইনের PHP CLI তেও সংশ্লিষ্ট এক্সটেনশন ইনস্টল করা হয়েছে।
কিভাবে নিশ্চিত করবেন PHP CLI তে কোন এক্সটেনশন ইনস্টল করা আছে
php -m চালানোর মাধ্যমে আপনি কمان্ড লাইন PHP CLI তে ইনস্টল করা এক্সটেনশনের তালিকা দেখতে পারবেন, ফলাফল কিছুটা এরকম হবে:
~# php -m
[PHP Modules]
event
posix
pcntl
...
কিভাবে নিশ্চিত করবেন PHP CLI এর php.ini ফাইলের অবস্থান
যখন আমরা এক্সটেনশন ইনস্টল করি, আমাদের php.ini ফাইল ম্যানুয়ালি কনফিগার করার প্রয়োজন হতে পারে, তাই PHP CLI এর php.ini ফাইলের অবস্থান নিশ্চিত করতে হবে। আপনি php --ini চালিয়ে PHP CLI এর ini ফাইলের অবস্থান খুঁজে পেতে পারেন, ফলাফল কিছুটা এরকম হবে(প্রতিটি সিস্টেমের দেখানো ফলাফল ভিন্ন হতে পারে):
~# 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 এর মাধ্যমে ইনস্টল করা যেতে পারে।
debian/ubuntu প্রভৃতি সিস্টেমে apt দিয়ে PHP এক্সটেনশন ইনস্টল করার পদ্ধতি (non-root ব্যবহারকারীর জন্য 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
...
centos প্রভৃতি সিস্টেমে yum দিয়ে PHP এক্সটেনশন ইনস্টল করার পদ্ধতি
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
...
ব্যাখ্যা:
apt বা yum ব্যবহার করে PHP এক্সটেনশন ইনস্টল করলে 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/
3। সোর্স জিপ ফাইল আনজিপ করুন
যেমন ডাউনলোড করা জিপ ফাইলের নাম 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/
...
4। সোর্সের ext/pcntl ডিরেক্টরিতে যান
~# cd php-5.3.29/ext/pcntl/
5। phpize কমান্ড চালান
~# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
6। configure কমান্ড চালান
~# ./configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
...
7। 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...
...
8। make install কমান্ড চালান
~# make install
Installing shared extensions: /usr/lib/php5/20090626/
9। ini ফাইল কনফিগার করুন
php --ini চালিয়ে php.ini ফাইলের অবস্থান খুঁজে বের করুন, তারপর ফাইলে extension=pcntl.so যোগ করুন।
ব্যাখ্যা:
এই পদ্ধতি সাধারণত PHP এর সঙ্গে প্রাক-ইনস্টল করা এক্সটেনশনগুলি ইনস্টল করতে ব্যবহৃত হয়, যেমন posix এক্সটেনশন এবং pcntl এক্সটেনশন। phpize ব্যবহার করে একটি এক্সটেনশন সংকলন করার পাশাপাশি, আপনি পুরো PHP পুনরায় সংকলন করতে পারেন, কম্পাইল করার সময় এক্সটেনশন যোগ করার জন্য প্যারামিটার ব্যবহার করে, যেমন সোর্সের মূল ডিরেক্টরিতে চালানো
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
পদ্ধতি ৪, phpize ইনস্টল
যদি ইনস্টল করতে চাওয়া এক্সটেনশন php সোর্সের ext ডিরেক্টরিতে না থাকে, তাহলে এটি 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। এক্সটেনশন ফাইলের জিপ আনজিপ করুন
~# 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
....
3। সোর্স ডিরেক্টরিতে যান
~# cd libevent-0.1.0/
4। phpize কমান্ড চালান
~# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
5। 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
...
6। 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
...
7। make install কমান্ড চালান
~# make install
Installing shared extensions: /usr/lib/php5/20090626/
8। ini ফাইল কনফিগার করুন
php --ini চালিয়ে php.ini ফাইলের অবস্থান খুঁজে বের করুন, তারপর ফাইলে extension=libevent.so যোগ করুন।