为什么我不能通过pecl安装php扩展?

时间:2016-06-03 13:56:29

标签: php memcached pecl

我使用cento-7-mini。首先我通过yum安装一些依赖项,然后编译php-5.5.36:

./configure --prefix=/usr/local/php \
--enable-fpm \
--enable-opcache \
--enable-mysqlnd \
--enable-mbstring \
--enable-sockets \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-gd \
--with-zlib \
--with-curl \
--with-mcrypt \
--with-openssl

然后我将php.ini-production复制到/usr/local/php/etc/php.ini,并且

mv /usr/local/php/etc/php-fpm.default /usr/local/php/etc/php-fpm

然后我配置我的nginx服务器,我可以使用phpinfo()成功测试它。我觉得这没问题。

我想安装一些扩展名,例如memcahe。

pecl install memcache

然后我可以看到:

Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-     20121212/memcache.so'
install ok: channel://pecl.php.net/memcache-3.0.8
configuration option "php_ini" is not set to php.ini location
You should add "extension=memcache.so" to php.ini

然后我添加

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so

到文件/usr/local/php/etc/php.ini

finnaly,我重启了我的php-fpm和nginx,但是我在phpinfo页面看不到memcache扩展名。

我看过很多文章,但我找不到答案。

1 个答案:

答案 0 :(得分:0)

首先,您需要通过apt-get安装PEAR,以获得PEARPECL都使用的必要包和分发系统。在shell提示符下输入:

sudo apt-get install php-pear

系统将提示您确认安装。只需按“y”即可进入。如果一切顺利,你应该看到它下载并安装php-pear软件包。

现在您需要安装php5-dev软件包以获取必要的PHP5源文件来编译其他模块。在shell提示符下输入以下内容:

sudo apt-get install php5-dev

如果您没有安装php5-dev软件包并尝试使用“pear install”安装PECL扩展,则会出现以下错误:

sh: phpize: not found
ERROR: `phpize’ failed

PECL_HTTP扩展需要安装其他依赖包。您可以跳过此内容以获取其他扩展名:

sudo apt-get install libcurl3-openssl-dev

现在我们终于准备好实际安装扩展了。在shell提示符下输入以下内容,但将“pecl_http”替换为您正在安装的PECL扩展名:

sudo pecl install pecl_http

安装程序可能会询问您正在安装的扩展程序的某些特定选项。您可以只输入一次或多次以接受所有默认值,除非您要为实现设置特定选项。如果一切顺利,模块应该下载,构建和安装。

安装完成后,可能会要求您在php.ini文件中添加“extension =”行。在您喜欢的文本编辑器中打开php.ini文件,并在标记为“Dynamic Extensions”的部分下添加该行。在Ubuntu上,php.ini文件似乎位于/ etc / php5 / apache2文件夹中:

sudo nano /etc/php5/apache2/php.ini

在此示例中,pecl_http扩展安装要求我添加“extension = http.so”。现在已经更新了php.ini文件,需要重新启动Apache,以便加载新扩展:

sudo /etc/init.d/apache2 restart