在 ubuntu 上安装 PECL 包

man*_*eja 35 php 13.04

我已经尝试了 100 次,我对 Ubuntu 真的很陌生,但以一堆我什至不明白的错误结束,有人可以帮助我吗?

这是我所做的:

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

May*_*hux 55

首先,你需要安装PEAR通过apt-get获得必要的包装和配送系统,既PEARPECL使用。在 shell 提示符下输入:

sudo apt-get install php-pear
Run Code Online (Sandbox Code Playgroud)

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

现在您需要安装 php5-dev 包来获取编译附加模块所需的 PHP5 源文件。从 shell 提示输入以下内容:

sudo apt-get install php5-dev
Run Code Online (Sandbox Code Playgroud)

如果你没有安装 php5-dev 包并尝试使用“pear install”安装 PECL 扩展,你会得到以下错误:

sh: phpize: not found
ERROR: `phpize’ failed
Run Code Online (Sandbox Code Playgroud)

PECL_HTTP 扩展需要安装额外的依赖包。对于其他扩展,您可能可以跳过此步骤:

sudo apt-get install libcurl3-openssl-dev
Run Code Online (Sandbox Code Playgroud)

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

sudo pecl install pecl_http
Run Code Online (Sandbox Code Playgroud)

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

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

sudo nano /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

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

sudo /etc/init.d/apache2 restart 
Run Code Online (Sandbox Code Playgroud)

来源

  • 如果你使用 PHP7,你会需要 `php7.0-dev` 包:`sudo apt-get install php7.0-dev` (5认同)

cwd*_*cwd 5

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

sudo apt-get install libpcre3-dev
Run Code Online (Sandbox Code Playgroud)

在运行之前,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
Run Code Online (Sandbox Code Playgroud)

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

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