우분투에 PECL 패키지 설치


32

나는 그것을 Ubuntu를 처음 사용하고 100 번 시도했지만 아무도 이해할 수없는 많은 오류로 끝났습니다.

여기 내가 한 일이 있습니다.

  1. PHP를 설치했습니다
  2. libcurl을 설치 한 다음 php5-dev를 설치했습니다.
  3. PECL 확장 설치를 시도했는데 PHPIZE찾을 수 없습니다.

Ask Ubuntu에 오신 것을 환영합니다. 발행 한 전체 명령과 전체 오류 메시지를 알려주십시오. 정보를 추가하려면 질문 텍스트를 편집하십시오.
MadMike

답변:


48

를 통해 첫째, 당신은 PEAR를 설치해야합니다 apt-get둘 것을 필요한 패키지 및 유통 시스템을 얻을 수 PEARPECL사용. 쉘 프롬프트에서 다음을 입력하십시오.

sudo apt-get install php-pear

설치를 확인하라는 메시지가 표시됩니다. “y”를 누르고 입력하십시오. 모든 것이 잘되면 php-pear 패키지를 다운로드하여 설치하십시오.

이제 추가 모듈을 컴파일하는 데 필요한 PHP5 소스 파일을 얻으려면 php5-dev 패키지를 설치해야합니다. 쉘 프롬프트에서 다음을 입력하십시오.

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

이제 확장을 실제로 설치할 준비가되었습니다. 쉘 프롬프트에서 다음을 입력하되 설치하려는 PECL 확장명으로“pecl_http”를 대체하십시오.

sudo pecl install pecl_http

설치 프로그램이 설치중인 확장의 특정 옵션에 대해 묻습니다. 구현에 특정 옵션을 설정하지 않는 한 enter를 한 번 이상 눌러 모든 기본값을 수락 할 수 있습니다. 문제가 해결되지 않으면 모듈을 다운로드, 빌드 및 설치해야합니다.

설치가 완료되면 php.ini 파일에“extension =”줄을 추가하라는 메시지가 표시 될 것입니다. 자주 사용하는 텍스트 편집기에서 php.ini 파일을 열고“Dynamic Extensions”섹션 아래에 줄을 추가하십시오. 우분투에서 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 

출처


이것들은 내가 똑같은 단계에서 (같은 소스에서) 여전히 기쁨이 없습니다 : / 나는 Windows에서 사용할 수없는 일부 확장 프로그램에 대해서만 우분투로 옮겼지만 이것이 처음이기 때문에 혼란 스럽습니다.
maniteja

1
참고 : make이 작업을 수행하기 전에 설치해야 할 수도 있습니다 . 간단히sudo apt-get install make
Tomanow

5
PHP7을 사용한다면, php7.0-dev대신 패키지를 원할 것입니다 :sudo apt-get install php7.0-dev
Graham Swan

4

@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() 자세한 내용은 여기를 참조하십시오.

추신 : 당신이 끝나면 아파치를 다시 시작하는 것을 잊지 마십시오 ( service apache2 restart)


좋은 전화; libcre-dev를 찾기 전에 귀하의 답변을 읽어 보시기 바랍니다. 나는 또한에 있음을 추가해야 경우에는 내가 추가 할 필요 extension=json.so전과 http.so라인 에도 불구하고 이미 가지고 json.ini에 포함 된 파일을 conf.d.
M1ke December

1

Maythux 및 cwd의 답변 외에도 php.ini 파일을 편집하지 않을 수도 있습니다. 이러한 변경 사항은 업데이트시 손실 될 수 있습니다.

데비안 (따라서 우분투)은 아파치 모듈과 같은 방식으로 PHP 모듈을 처리합니다. 살펴보면 다음 /etc/php5과 같은 디렉토리가 있습니다.

apache2/
cli/
mods-available/

살펴보면 다음 mods-available과 같은 여러 파일이 표시됩니다.

curl.ini
gd.ini
json.ini
mysql.ini
…

모든 API (apache, cli, cgi)에 대해 이러한 사용 가능한 모드를 활성화 / 비활성화하려면 명령을 사용 php5enmod하거나 다음 php5dismod과 같이 할 수 있습니다 .

$ sudo php5enmod curl

각기

$ sudo php5dismod curl

그러면 apache2/conf.d/및에 모듈 구성 파일에 대한 심볼릭 링크가 만들어 지거나 제거 cli/conf.d/됩니다.

sapi를 지정하여 모드를 활성화 / 비활성화 할 수 있습니다 (이 경우에는 아파치).

$ 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)의 벌금을 보인다. ( 업데이트는 : 당신이 버전 2로, pecl_http를 찾고 있다면 그것은 이후에로드되어야 rapfh하고 propro그래서에 우선 순위를 설정, mods-available/http.ini30.)

이를 통해 모듈을 활성화 할 수 있습니다.

$ sudo php5enmod raphf

(참고 : 내 대답은 Ubuntu 14.04에 따라 다르지만 13.04에서 동등한 방식으로 작동 할 수 있습니다 ( http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu 참조 )


1

요즘에는 PEAR를 다음과 같이 설치하여 소스에서 가져옵니다.

wget http://pear.php.net/go-pear.phar
php go-pear.phar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.