![在 ubuntu 上安装 PECL 包](https://linux22.com/image/847204/%E5%9C%A8%20ubuntu%20%E4%B8%8A%E5%AE%89%E8%A3%85%20PECL%20%E5%8C%85.png)
我已经尝试了 100 次,我对 Ubuntu 真的很陌生,最后出现了一堆我甚至不明白的错误,有人能帮帮我吗?
这是我所做的:
- 我安装了 PHP
- 我安装了 libcurl 然后安装了 php5-dev
- 我尝试安装 PECL 扩展但显示
PHPIZE
未找到。
答案1
首先,您需要通过 安装 PEAR来获取和使用的apt-get
必要软件包和分发系统。在 shell 提示符下输入:PEAR
PECL
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.ini
conf.d
php.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.ini
。30
)
这样您就可以启用该模块:
$ 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