PHP 5.3.1 정의되지 않은 기호 : Apache 시작시 OnUpdateLong 오류


9

이 서버에서 Ubuntu 8.04를 실행하고 있습니다. 패키지 관리자를 통해 PHP 5.2를 설치했습니다. PHP 5.3.1을 직접 설치하기 위해 제거했습니다. 패키지를 이렇게 만들었습니다.

./configure --prefix=/opt/php --with-mysql --with-curl=/usr/bin --with-apxs2=/usr/bin/apxs2
make
make install

이것은 / opt / php /에 PHP 5.3.1을 설치했습니다.

$ php -v
PHP 5.3.1 (cli) (built: Dec  7 2009 10:51:14) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

그러나 Apache를 시작하려고하면 이것을 얻습니다.

 # /etc/init.d/apache2 restart
 * Restarting web server apache2       
  apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: 
  Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: 
  Cannot load /usr/lib/apache2/modules/libphp5.so into server: 
  /usr/lib/apache2/modules/libphp5.so: undefined symbol: OnUpdateLong
                                                                     [fail]

이 오류의 원인은 무엇입니까? 내가 볼 수있는 모든 참조는 php4 등을 위해 php5 패키지를 빌드하는 것과 관련이 있습니다. 이 컴퓨터에는 PHP4가 설치되지 않았습니다.

답변:


11

실제로 James Hackett의 말은 저에게 효과적이었습니다.

내 문제는 Apache를 설치 하기 전에 PHP 빌드했다는 것입니다 (최신 트렁크에서 PHP를 빌드하고 APT를 통해 Apache2를 설치했습니다).

따라서 아파치에 정의되지 않은 기호 (발견되지 않은 모듈은 임의의 btw입니다)가 발생한다는 오류가 발생하면 다음을 수행했습니다.

  1. make distclean PHP 소스에서
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

모든 것이 잘 작동했습니다.

명백한 선장은 나에게서 숨어있었습니다. 물론 명확하지 않은 && 구성하지 않고 리메이크하면, 충분하지 않은 새로운 심볼을 컴파일하기 때문에 ;-)


3

나는이 같은 문제가 있었고 PHP 소스 디렉토리를 삭제하고 tarball을 다시 추출한 다음 다시 컴파일하면 모든 것이 잘 작동했습니다.

아파치 없이이 시스템에 PHP를 이전에 설치 한 다음 다른 구성 설정으로 동일한 소스 디렉토리에서 PHP를 다시 설치하려고 시도했습니다.


1

php5를 만들었지 만 아파치와 php5 사이의 접착제를 다시 만들지 않았습니다. mod_php5를 사용하고 있기 때문에 실패합니다 (논리적).

fastcgi 덕분에 PHP 스크립트를 실행할 수 있습니다 (내장 PHP 5.3.1은 괜찮다고 가정합니다). 그러나 어쨌든 다른 방식으로 행동하는 것이 좋습니다.

프로덕션 서버에서 수동으로 소프트웨어를 구축하는 것은 꽤 불쾌합니다. 또한 PHP5는 큰 소프트웨어이므로 유지 관리 및 보안 목적으로 사용 해서는 안됩니다 .

실제로 해당 버전이 필요한 경우이를 달성하는 올바른 방법은 패키지를 백 포트하는 것입니다. (예, 포장!)

포장 지식과 시간이 약간 필요합니다. apt-get source php5/etc/apt/sources.list에 deb-src 소스가있는 경우 패키징 소스를 다음과 같이 얻을 수 있습니다.


프로덕션 서버가 아닙니다. 그것은 단지 우리의 dev 서버이며 PHP 5.3이 시스템에서 고장날 경우 무엇을 알아 내려고 노력 중입니다.
baudtack 2009

1
"제작 서버에서 수동으로 소프트웨어를 구축하는 것은 매우 까다로운 일입니다. 또한 PHP5는 큰 소프트웨어이므로 유지 관리 및 보안 목적으로는 그렇게하지 않아야합니다." 대부분의 배포판에서는 최신 상태를 유지할 수있는 유일한 방법입니다. 예를 들어, 우분투는 2009 년 6 월에 릴리스 된 리포지토리에서 5.2.10 만 안정적입니다. 개인적으로 사전 패키지를 사용하는 것이 보안 위험이 더 크다는 것을 알게되었습니다. 직접 빌드하면 필요하고 제거 할 수 있습니다. 또한 최신 정보를 유지할 수 있습니다.
Andy Shellam

1

libphp5.so를로드하는 동안 apache2에서 zend_parse_paramater 오류가 발생하는 경우

/apache2.conf : /etc/apache2/mods-enabled/php5.load의 1 행에있는 구문 오류 : /usr/lib/apache2/modules/libphp5.so를 서버에로드 할 수 없습니다 : / usr / lib / apache2 / modules / libphp5.so : 정의되지 않은 기호 : zend_parse_parameters

./configure 출력을 살펴보십시오. 다음과 유사한 메시지가 표시되는 경우 :

configure : 경고 : Zend / PHP 파서 재생을 위해 지원되는 바이슨 버전 : 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (발견 : 없음).

들소 설치를 시도하십시오 : sudo apt-get install bison

그런 다음 distclean을 만들고 ./configure ...를 만든 다음 -i install을 만드십시오.

http://www.linuxforums.org/forum/redhat-fedora-linux-help/87975-configuring-php-work-apache.html


PHP 소스 코드를 어떤 식 으로든 수정 한 경우에만 zend 파서를 다시 작성해야합니다. 프로덕션 서버에 들소를 설치 한 적이 없으며 문제가 없었습니다.
Andy Shellam

0

@zecrazytux가 지적했듯이 적절한 apache-dev 패키지를 설치 했습니까? PHP는 어디에 있는지 말해도 PHP가 없어도 빌드 할 수 있습니다. ./configure 출력을 확인해야합니다.

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