Ekstenstion Yükleme
Dikkat
Apache+PHP veya Nginx+PHP çalışma modundan farklı olarak, Workerman, PHP komut satırı PHP CLI üzerinde çalışır ve farklı bir PHP çalıştırılabilir dosyası kullanır, kullanılan php.ini dosyası da farklı olabilir. Bu nedenle, web sayfasında phpinfo() çıktısında belirli bir uzantının yüklü olduğunu görmek, komut satırındaki PHP CLI'nin de ilgili uzantıya sahip olduğu anlamına gelmez.
PHP CLI'nin hangi uzantıların yüklü olduğunu nasıl belirleriz
php -m komutunu çalıştırarak komut satırı PHP CLI'de yüklü olan uzantıları listeleyebilirsiniz, sonuç aşağıdaki gibi olur:
~# php -m
[PHP Modülleri]
event
posix
pcntl
...
PHP CLI'nin php.ini dosyasının yerini nasıl belirleriz
Uzantıları yüklerken, php.ini dosyasını manuel olarak yapılandırmak, uzantıları eklemek gerekebilir, bu yüzden PHP CLI'nin php.ini dosyasının yerini kesin olarak belirlemek önemlidir. PHP CLI'nin ini dosyası konumunu bulmak için php --ini komutunu çalıştırabilirsiniz, sonuç aşağıdaki gibi olur (her sistemdeki gösterim farklılık gösterebilir):
~# 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'ye uzantı yükleme (memcached uzantısını yükleme örneği)
Yöntem 1: apt veya yum komutunu kullanarak yükleme
PHP, apt veya yum komutları ile yüklendiyse, uzantılar da apt veya yum ile yüklenebilir.
debian/ubuntu gibi sistemlerde apt ile PHP uzantısı yükleme yöntemi (root olmayan kullanıcılar için sudo komutunu eklemeye dikkat edin)
apt-cache searchkomutunu kullanarak uzantı paketlerini arayın.~# apt-cache search memcached php php-apc - APC (Alternatif PHP Cache) modülü PHP 5 için php5-memcached - php5 için memcached modülüapt-get installkomutunu kullanarak uzantı paketini yükleyin.~# apt-get install -y php5-memcached Paket listeleri okunuyor... Tamam Durum bilgileri okunuyor... Tamam ...
centos gibi sistemlerde yum ile PHP uzantısı yükleme yöntemi
yum searchkomutunu kullanarak uzantı paketlerini arayın.~# yum search memcached php php-pecl-memcached - php5 için memcached modülüyum installkomutunu kullanarak uzantı paketini yükleyin.~# yum install -y php-pecl-memcached Paket listeleri okunuyor... Tamam Durum bilgileri okunuyor... Tamam ...Açıklama:
apt veya yum kullanarak PHP uzantılarını yüklemek php.ini dosyasını otomatik olarak yapılandırır, yükledikten hemen sonra kullanılabilir, bu da oldukça kullanışlıdır. Dezavantajı ise bazı uzantıların apt veya yum içinde karşılık gelen yükleme paketlerinin olmaması olabilir.
Yöntem 2: pecl ile yükleme
Uzantıyı yüklemek için pecl install komutunu kullanın.
pecl installile yükleme~# pecl install memcached memcached-2.2.0.tgz indiriliyor... memcached-2.2.0.tgz (70,449 bayt) indirmeye başlanıyor ....- php.ini dosyasını yapılandırın.
php --ini komutunu çalıştırarak php.ini dosyasının yerini bulun ve dosyaya extension=memcached.so ekleyin.
Yöntem 3: Kaynak kodu ile derleyerek yükleme (genellikle PHP'nin kendi uzantılarını yüklemek için, pcntl uzantısını yükleme örneği)
- Mevcut PHP CLI sürümünü görmek için
php -vkomutunu kullanın.~# 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 - Sürümüne göre PHP kaynak kodunu indirin.
PHP geçmiş sürümleri indirme sayfası: https://php.net/releases/
- Kaynak kodu sıkıştırmasını çıkarın.
Örneğin indirdiğiniz sıkıştırma dosyasının adı php-5.3.29.tar.gz ise
~# 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/
...
- Kaynak kodundaki ext/pcntl dizinine gidin.
~# cd php-5.3.29/ext/pcntl/ phpizekomutunu çalıştırın.~# phpize Aşağıdakiler için yapılandırılıyor: PHP Api Sürümü: 20090626 Zend Modül Api No: 20090626 Zend Uzantı Api No: 220090626configurekomutunu çalıştırın.~# ./configure long satırları ve -e'yi işleyebilen grep'i kontrol ediliyor... /bin/grep egrep'i kontrol ediliyor... /bin/grep -E ...makekomutunu çalıştırın.~# 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 installkomutunu çalıştırın.~# make install Paylaşılan uzantılar yükleniyor: /usr/lib/php5/20090626/- ini dosyasını yapılandırın.
php --ini komutunu çalıştırarak php.ini dosyasının yerini bulun ve dosyaya extension=pcntl.so ekleyin.
Açıklama:
Bu yöntem genellikle PHP'nin kendi uzantılarını yüklemek için kullanılır, örneğin posix uzantısı ve pcntl uzantısı. phpize ile bir uzantıyı derlemenin yanında, tüm PHP'yi yeniden derlemek de mümkündür, derleme sırasında uzantıyı eklemek için seçenekler kullanılabilir, örneğin kaynak dizininde
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Yöntem 4: phpize ile yükleme
Yüklemek istediğiniz uzantı PHP kaynak kodunun ext dizininde yoksa, uzantıyı https://pecl.php.net adresinden arayıp indirmeniz gerekir.
Örneğin libevent uzantısını yüklemek için (sisteminizde libevent-dev kütüphanesinin yüklü olduğunu varsayalım)
- libevent uzantı dosyasını indiriniz (hangi dizine indirdiğiniz önemli değil).
~# 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 pecl.php.net adresine ulaşım sağlanıyor... 104.236.228.160 pecl.php.net|104.236.228.160|:80'ye bağlanıyor... bağlı. HTTP isteği gönderildi, yanıt bekleniyor... 200 OK Boyut: 9806 (9.6K) [application/octet-stream] “libevent-0.1.0.tgz” olarak kaydediliyor.
100%[=======================================================>] 9,806 41.4K/s in 0.2s
2. Uzantı dosyasını çıkarın.
```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
....
-
Kaynak dizinine gidin.
~# cd libevent-0.1.0/ -
phpizekomutunu çalıştırın.~# phpize Aşağıdakiler için yapılandırılıyor: PHP Api Sürümü: 20090626 Zend Modül Api No: 20090626 Zend Uzantı Api No: 220090626 -
configurekomutunu çalıştırın.~# ./configure long satırları ve -e'yi işleyebilen grep'i kontrol ediliyor... /bin/grep egrep'i kontrol ediliyor... /bin/grep -E bir çıktıyı kısaltmayan bir sed kontrol ediliyor... /bin/sed cc'nin olup olmadığını kontrol ediliyor... cc C derleyicisinin çalışıp çalışmadığını kontrol ediliyor... evet ... -
makekomutunu çalıştırın.~# /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 installkomutunu çalıştırın.~# make install Paylaşılan uzantılar yükleniyor: /usr/lib/php5/20090626/ -
ini dosyasını yapılandırın.
php --ini komutunu çalıştırarak php.ini dosyasının yerini bulun ve dosyaya extension=libevent.so ekleyin.