在ubuntu上安装PECL软件包


32

我已经尝试了100次,而我真的是Ubuntu的新手,却遇到了很多我什至不知道的错误,请问有人可以帮助我吗?

这是我所做的:

  1. 我安装了PHP
  2. 我安装了libcurl然后安装了php5-dev
  3. 我尝试安装PECL扩展名,但提示PHPIZE未找到。

欢迎来到Ask Ubuntu。能否请给我们您发出的完整命令和完整的错误消息。编辑您的问题文本以添加信息。
MadMike 2014年

Answers:


48

首先,你需要安装PEAR通过apt-get获得必要的包装和配送系统,既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

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

安装完成后,可能会要求您在php.ini文件中添加“ extension =”行。在您喜欢的文本编辑器中打开php.ini文件,并在“动态扩展”部分下添加该行。在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 

资源


这些是我完全遵循的相同步骤(来自同一来源),仍然不高兴:/我移至Ubuntu仅仅是为了一些Windows上不可用的扩展,但这令人困惑,因为我是新来的。
maniteja 2014年

1
请注意:make在执行此操作之前,您可能需要安装。只需做sudo apt-get install make
Tomanow 2014年

5
如果您使用的是PHP7,则需要该php7.0-dev软件包:sudo apt-get install php7.0-dev
Graham Swan

4

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

sudo apt-get install libpcre3-dev

在运行之前,pecl install pecl_http因为出现以下错误pcre.h

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

此外,而不是编辑的php.ini文件,我创建了一个名为新文件pecl-http.iniconf.d的其中子目录php.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


好决定; 希望我在开始寻找libcre-dev之前先读过您的答案。我还要补充一点,在我的情况下,我需要添加extension=json.so的前http.so,尽管已经具有json.ini包含在文件中conf.d
M1ke 2014年

1

除了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(阿帕奇,CLI,CGI),你可以使用的命令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。它可能取决于您必须使用哪个优先级的模块类型。对于raphf20似乎很好。(更新:如果您正在寻找pecl_http,则从版本2开始必须在rapfh和之后加载它propro,因此请将优先级设置mods-available/http.ini30。)

这样,您可以启用该模块:

$ sudo php5enmod raphf

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


1

现在,以这种方式安装PEAR,以从源代码获取它:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.