在ubuntu上安装PECL包
我已经尝试了100次我是Ubuntu的新手并以一堆我甚至不理解的错误结束了请帮助我吗?
这是我做的:
- 我安装了PHP
- 我安装了libcurl然后php5-dev
- 我尝试安装PECL扩展,它说
PHPIZE
。
首先,您需要通过apt-get
安装PEAR以获得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
安装程序可能会询问您正在安装的扩展的某些特定选项。 您可以只输入一次或多次以接受所有默认值,除非您要为实现设置特定选项。 如果一切顺利,模块应该下载,构建和安装。
安装完成后,它可能会要求您在php.ini文件中添加“extension =”行。 在您喜欢的文本编辑器中打开php.ini文件,并在标有“Dynamic Extensions”的部分下添加该行。 在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
资源
除了@ Ask的回答,我还需要做:
sudo apt-get install libpcre3-dev
在运行pecl install pecl_http
之前,因为我收到了关于pcre.h
错误:
致命错误:pcre.h:没有终止此类文件或目录编译。
另外,我没有编辑php.ini
文件,而是在php.ini
文件所在的conf.d
子目录中创建了一个名为pecl-http.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
)
除了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(apache,cli,cgi)启用/禁用这些可用的mod,您可以使用命令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 )