![在 Arch Linux 上安装 php_http](https://linux22.com/image/17330/%E5%9C%A8%20Arch%20Linux%20%E4%B8%8A%E5%AE%89%E8%A3%85%20php_http.png)
首先我安装了 PHP 的curl 扩展:
$ sudo pacman -S php-curl
和
$ grep curl /etc/php/php.ini
extension=curl.so
然后我安装了PHP PEAR
$ sudo pacman -S php-pear
现在安装了 pear,我还安装了 PECL,现在应该能够安装 php_http 扩展。
$ pecl install php_http
和
$ grep http.so /etc/php/php.ini
extension=http.so
http.so 位于文件夹 /usr/lib/php/moduels/ 中,然后复制到文件夹 /usr/lib/http/modules/ 。
现在,据我所知,这应该已经安装了 php_http 扩展,但是当我尝试
$req = new HttpRequest();
我收到错误
Fatal error: Class 'HttpRequest' not found in /srv/http/webcrawler/nettocrawl.php on line 4
答案1
PECL HTTP 2.0+
最新版本的 pecl_http 引入了 http 命名空间。所以HttpRequest
将不再可用。关注 php 的文档使用命名空间,并查看提供的 phpunit 目录以获取用法和示例。
$req = new http\Client\Request();
或者更优选的方式,允许向后支持
use http\Client\Request as HttpRequest;
$req = new HttpRequest();
别的
有时 PECL 扩展可能无法正确安装。如果您混合 pacman 软件包和 pecl 扩展,则可能会发生这种情况,但这种情况非常罕见。我建议手动安装 pecl_http。
抓取源码
shell ~> curl -o pecl_http.tar.gz http://pecl.php.net/get/pecl_http
shell ~> tar zvxf pecl_http.tar.gz
shell ~> cd pecl_http
配置、编译和测试
shell ~/pecl_http> phpize
shell ~/pecl_http> ./configure
shell ~/pecl_http> make
shell ~/pecl_http> make test
安装
shell ~/pecl_http> make install
http.so
这将输出将安装的目录。就我而言,它是/usr/lib/php/<timestamp>/
.一个有用的注释。
php.ini 和测试
编辑php.ini
文件,并添加http.so
扩展名。
shell ~> php -m | grep http
如果http
不显示,请重新编辑php.ini
、 以及扩展名完整路径;
extension=/usr/lib/php/<timestamp>/http.so