在 ubuntu 上安装 PECL 包

在 ubuntu 上安装 PECL 包

我已经尝试了 100 次,我对 Ubuntu 真的很陌生,最后出现了一堆我甚至不明白的错误,有人能帮帮我吗?

这是我所做的:

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

答案1

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

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 文件,并在标有“动态扩展”的部分下添加该行。在 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 

来源

答案2

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

sudo apt-get install libpcre3-dev

运行之前,pecl install pecl_http因为我收到了这个错误pcre.h

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

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

我需要添加三行:

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

最后,由于这个安装的版本2.0.6我无法使用该http_get_request_headers功能,而需要使用命名空间版本,\http\Env::getRequestHeader() 点击此处查看更多详情

附言:完成后别忘了重新启动 apache ( service apache2 restart)

答案3

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

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

apache2/
cli/
mods-available/

当你查看时,mods-available你会看到几个文件,例如:

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

php5enmod要为所有 API(apache、cli、cgi)启用/禁用这些可用的模块,您只需使用以下命令即可php5dismod

$ 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。使用哪个优先级可能取决于模块的类型。20raphf似乎没问题。(更新:如果您正在寻找 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

答案4

在 Ubuntu 22.04 Minimal 上,我做了:

apt-get install -y php-dev
apt-get install php-pear

相关内容