在ubuntu上安装PECL包

我已经尝试了100次我是Ubuntu的新手并以一堆我甚至不理解的错误结束了请帮助我吗?

这是我做的:

  1. 我安装了PHP
  2. 我安装了libcurl然后php5-dev
  3. 我尝试安装PECL扩展,它说PHPIZE

首先,您需要通过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 

资源

除了@ Ask的回答,我还需要做:

 sudo apt-get install libpcre3-dev 

在运行pecl install pecl_http之前,因为我收到了关于pcre.h错误:

致命错误:pcre.h:没有终止此类文件或目录编译。

另外,我没有编辑php.ini文件,而是在php.ini文件所在的conf.d子目录中创建了一个名为pecl-http.ini的新文件(在ubuntu /etc/php5/apache2/conf.d

我需要添加三行:

 extension=raphf.so extension=propro.so extension=http.so 

最后,由于这个安装的版本2.0.6我不能使用http_get_request_headers函数,但需要使用命名空间版本, \http\Env::getRequestHeader() 在这里查看更多细节

ps:完成后不要忘记重启apache( service apache2 restart

除了Maythux和cwd的答案之外,您可能不想编辑php.ini文件,因为这些更改可能会在更新时丢失。

Debian(以及Ubuntu)以与apache模块相同的方式处理php模块。 看看/etc/php5 ,你会发现这样的目录:

 apache2/ cli/ mods-available/ 

当您查看mods-available您会看到以下几个文件:

 curl.ini gd.ini json.ini mysql.ini … 

要为所有API(apache,cli,cgi)启用/禁用这些可用的mod,您可以使用命令php5enmodphp5dismod如下所示:

 $ sudo php5enmod curl 

分别

 $ sudo php5dismod curl 

这些将在apache2/conf.d/cli/conf.d/创建(或删除)指向模块配置文件的符号链接。

您还可以指定sapi来启用/禁用mod(在本例中为apache):

 $ sudo php5enmod -s apache2 

pecl install可能无法为raphf (以及随其安装的其他模块)创建配置文件,但您可以自己创建它:

 $ sudo touch /etc/php5/mods-available/raphf.ini 

然后写下以下几行:

 ; configuration for php raphf module ; priority=20 extension=raphf.so 

默认优先级为20.可能取决于您必须使用的优先级的模块类型。 对于raphf 20似乎很好。 ( 更新 :如果你正在寻找pecl_http,从版本2开始,它必须在rapfhpropro之后加载,所以将mods-available/http.ini的优先级设置为30

有了它,您可以启用该模块:

 $ sudo php5enmod raphf 

(注意:我的答案取决于Ubuntu 14.04,但可能在13.04中以相同的方式工作,请参阅http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )