먼저 PHP 컬 확장을 설치했습니다.
$ 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/modules/ 폴더에 있으며 /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 확장이 올바르게 설치되지 않을 수 있습니다. 팩맨 패키지와 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