Heim >Backend-Entwicklung >PHP-Tutorial > debian停安装php的一些扩展geoip,mongo,redis,libevent,proctitle,inotify,pcntl

debian停安装php的一些扩展geoip,mongo,redis,libevent,proctitle,inotify,pcntl

WBOY
WBOYOriginal
2016-06-13 12:35:321222Durchsuche

debian下安装php的一些扩展geoip,mongo,redis,libevent,proctitle,inotify,pcntl

因为项目的关系,需要安装一些新的扩展

debian xfce 7.2 x86   下面3个都是通过apt-get安装的。

PHP 5.4.4-14+deb7u5 (cli)

nginx1.2.1

apache 2.2.22

1: 通过默认的方法安装(最优),大部分常用的都在debian的仓库里面,可以下载到  注意,#是代表root 可通过su - 输入密码后进入root

#apt-get install php5-geoip
#apt-get install php-apc
#apt-get install libevent-dev

2:通过pecl 安装(其次)

#pecl install mongo
#pecl install channel://pecl.php.net/libevent-0.1.0
#pecl install channel://pecl.php.net/proctitle-0.1.2
#pecl install inotify


pecl 安装完后,需要做几个事情,一个是把 对应的so文件加到对应的ini,其次是把ini链接到conf.d

比如上面的3个扩展,pecl后 

在debian的

/usr/lib/php5/20100525/mongo.so
/usr/lib/php5/20100525/libevent.so
/usr/lib/php5/20100525/proctitle.so
/usr/lib/php5/20100525/inotify.so

php5在/etc/php5 执行下面的shell命名,这是建立一些配置文件,debian的php的php.ini 把配置文件分散到了/etc/php5/conf.d, 而conf.d 的内容都来自/etc/php5/mods-available/ 为了debian包的严谨,我们这里就作两次链接,而不是直接去conf.d 建对应的.ini 文件.


#echo "extension=mongo.so" > /etc/php5/mods-available/mongo.ini
#echo "extension=libevent.so" > /etc/php5/mods-available/libevent.ini
#echo "extension=proctitle.so" > /etc/php5/mods-available/proctitle.ini
#echo "extension=inotify.so" > /etc/php5/mods-available/inotify.ini
#ln -s /etc/php5/mods-available/mongo.ini /etc/php5/conf.d/mongo.ini
#ln -s /etc/php5/mods-available/libevent.ini /etc/php5/conf.d/libevent.ini
#ln -s /etc/php5/mods-available/proctitle.ini /etc/php5/conf.d/proctitle.ini
#ln -s /etc/php5/mods-available/inotify.ini /etc/php5/conf.d/inotify.ini

重启下nginx的php5-fcgi or apache,可以看到这些模块已经加载成功

3:通过扩展的源码安装(编译安装,对于debian不是很推荐,前提是仓库没有) 安装的是php-redis 扩展

(redis server需要你自己安,编译的环境这些软件参考我前面的文章安装就行了,gcc之类的

#wget https://redis.googlecode.com/files/redis-2.6.14.tar.gz
#tar -zxvf redis
#make

#tar -zxvf nicolasff-phpredis-2.1.3-124-gd4ad907.tar.gz
#cd nicolasff-phpredis-00233a3
#phpize
#./configure --with-php-config=/usr/bin/php-config
#echo "extension=redis.so" > /etc/php5/mods-available/redis.ini
#ln -s /etc/php5/mods-available/redis.ini /etc/php5/conf.d/redis.ini

同上,需要重启server


4:通过php源码安装(开关某些php默认安装了但是关闭的扩展,这里我们要开启的是pcntl)

#mkdir php
#cd php
#apt-get source php5

  这里我们进去 php5-(版本号)/ext/pcntl 

#cd php5-5.4.4/ext/pcntl
#phpize
#./configure
#make
#echo "extension=pcntl.so" > /etc/php5/mods-available/pcntl.ini
#ln -s /etc/php5/mods-available/pcntl.ini /etc/php5/conf.d/pcntl.ini

同上,重启server就可以了


如果php报错,

PHP Warning: Module ‘pcntl’ already loaded in Unknown on line 0

那就说明已经装上了,现在是重复装的,需要把上面添加的两个pcntl.ini文件删除掉。 然后去把php.ini 文件里面的

disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

; 注释掉。重启server就可以了, 注意,php.ini 在apache2,nginx里面都不同的, apache2的在/etc/php5/apache2/php.ini  nginx我指定的是cgi里面的/etc/php5/cgi/php.ini 

看你server用的哪个,就去注释掉哪个就可以了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn