개발! 딱 깔끔하고 센스있게!

Cenos 가 설치 한 glibc 버 전이 아 닌 PHP 를 어떻게 사용 하도록 합 니까? 본문

개발 스크랩 메모/PHP

Cenos 가 설치 한 glibc 버 전이 아 닌 PHP 를 어떻게 사용 하도록 합 니까?

렉사이 2020. 12. 1. 23:56

제 가 개발 하고 있 는 코드 는 윈도 엑스 와 맥 스 크로스 에서 잘 작 동 되 고 있 습 니 다.

CenOS (Fedora 와 Ubuntu) 에서 테스트 할 때 제대로 작 동 하지 않 습 니 다.

인터넷 검색 을 통 해 glibc 버 전의 iconv 가 이 문 제 를 일 으 켰 다 는 결론 을 얻 었 다.

그래서 지금 은 libiconv 버 전의 iconv 가 필요 합 니 다.

저 는 libiconv 를 다운로드 하고 -- prefix = / usr / local 로 설정 하 였 습 니 다.

make, 그 다음 make intal 을 사용 하 는 것 은 잘못 이 없습니다.

이것 은 설치 에 성공 한 것 같 습 니 다.

실행 / usr / local / bin / iconv - version 버 전 은 libiconv 라 고 합 니 다.

간단 한 iconv 버 전 에 도 불구 하고 glibc 버 전 을 제공 합 니 다.

그리고 나 는 -- With iconv = / usr / local 을 사용 하여 소스 코드 에서 PHP 를 다시 번역 합 니 다.

하지만 ppinfor () 는 현재 사용 하고 있 는 iconv 를 glibc 버 전 으로 표시 합 니 다.

저 는 다른 번역 방법 도 시도 해 봤 는데 iconv dir 나 사용 / usr / local / bin / phop 를 사용 합 니 다.

물론 PHP 를 재 컴 파일 한 후에 웹 서버 를 다시 시 작 했 습 니 다.

나의 / etc / httpd / conf / httptd. conf 중 다음 줄 이 있 습 니 다:

LoadModule /usr/lib/httpd/modules/libphp5.so 

실제로 libphip. 5. so 는 / usr / lib / httpd / modules 에 있 습 니 다.

ppinfor () 는 PHP 5.3.3 을 나 타 냈 다.

미리 설 치 된 PHP 5.1 도 삭 제 했 습 니 다.

그러나 iconv 는 아직도 globc 버 전 을 사용 하고 있다.

dd / user / lib / httpd / modules / libphip 5. so

linux-gate.so.1 => (0x003b1000) /usr/local/lib/preloadable_libiconv.so (0x00110000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x001ed000) librt.so.1 => /lib/librt.so.1 (0x0021f000) libmysqlclient.so.15 => /usr/lib/mysql/libmysqlclient.so.15 (0x003b2000) libldap-2.3.so.0 => /usr/lib/libldap-2.3.so.0 (0x0026e000) liblber-2.3.so.0 => /usr/lib/liblber-2.3.so.0 (0x00370000) libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x00516000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x002a8000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00228000) libz.so.1 => /usr/lib/libz.so.1 (0x00328000) libcurl.so.3 => /usr/lib/libcurl.so.3 (0x00f23000) libm.so.6 => /lib/libm.so.6 (0x0033b000) libdl.so.2 => /lib/libdl.so.2 (0x00364000) libnsl.so.1 => /lib/libnsl.so.1 (0x0037e000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00f5f000) libssl.so.6 => /lib/libssl.so.6 (0x0862c000) libcrypto.so.6 => /lib/libcrypto.so.6 (0x04145000) libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x08e2d000) libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x0611a000) libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x005f4000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x0024e000) libidn.so.11 => /usr/lib/libidn.so.11 (0x071f5000) libc.so.6 => /lib/libc.so.6 (0x08aa6000) libpthread.so.0 => /lib/libpthread.so.0 (0x00397000) /lib/ld-linux.so.2 (0x00251000) libresolv.so.2 => /lib/libresolv.so.2 (0x0748a000) libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x07ddf000) libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x062b7000) libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00369000) libselinux.so.1 => /lib/libselinux.so.1 (0x0913b000) libsepol.so.1 => /lib/libsepol.so.1 (0x07eb4000) 

NulPoint. ph 의 십자주

대답 하 다.

p - iconv 확장 자 를 수 동 으로 재 편 했 습 니 다.

px - 5.3.3 glibc iconv 에서 GNU - libicon 으로 변경 하 였 습 니 다.

다음 절 차 를 따른다:

  1. download php-5.3.3 source code package
  2. extract it and go into php-5.3.3/ext/iconv subdirectory
  3. execute phpize command (if you have no such command then install php-devel package)
  4. (*) 프로필 편집 (vim configure): 4664 줄 에 iconv impl name = 을 추가 합 니 다.

    (시스템 설정 상의 정확 한 줄 번호 가 다 를 수 있 습 니 다):

    ... iconv_impl_name="" if test -z "$iconv_impl_name"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if using GNU libiconv" >&5< ... 
  5. . / configure -- iconv = / usr / local | grepiconv:

    checking if using GNU libiconv... yes 
  6. 제작

  7. sudo make install

현재 ph - I | grep "iconv impl" 을 실행 하고 있 습 니 다:

iconv implementation => libiconv 

* 이 기법 은 globc 가 아 닌 'Globiconv' 를 선택 하도록 강제 합 니 다.

기본 적 인 상황 에서 glibc 의 iconv 를 첫 번 째 로 검사 합 니 다.

GNU libicon 를 확인 하지 않 습 니 다.

Comments