Answers:
首先,你需要安装PEAR通过apt-get
获得必要的包装和配送系统,既PEAR
和PECL
使用。在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
make
在执行此操作之前,您可能需要安装。只需做sudo apt-get install make
php7.0-dev
软件包:sudo apt-get install php7.0-dev
除了@Ask的答案,我还需要做:
sudo apt-get install libpcre3-dev
在运行之前,pecl install pecl_http
因为出现以下错误pcre.h
:
严重错误:pcre.h:没有终止此类文件或目录的编译。
此外,而不是编辑的php.ini
文件,我创建了一个名为新文件pecl-http.ini
中conf.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
)
extension=json.so
的前http.so
行,尽管已经具有json.ini
包含在文件中conf.d
。
除了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),你可以使用的命令php5enmod
或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。它可能取决于您必须使用哪个优先级的模块类型。对于raphf
20似乎很好。(更新:如果您正在寻找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)