질문/조언질답게시판

php 확장모듈 intl , zip 이 로드가 되지 않습니다.

 

 intl.so zip.so 는 존재하는데 왜 로드가 되질 않을까요?

 

  • profile

    1. 버전이나 아키텍처에 맞지 않는 .so 파일을 설치했거나

        - 예: PHP 7.3인데 php72-php-zip 패키지를 설치하는 등...

    2. /etc/...중략.../php.d 폴더 내에 해당 파일을 로딩하는 설정파일이 없거나

        - 정상적인 repo를 사용하여 설치하셨다면 2)의 원인은 1)입니다.

  • profile profile
    /etc/...중략.../php.d 폴더에 xx-intl.ini xx-zip.ini 파일이 없습니다. yum 명령으로 정상적으로 설치했는데도 그러네요....
  • profile profile

    그럼 정상적으로 설치한 것이 아니겠죠. remi repo라면 버전에 따라 패키지가 상당히 세분화되어 있고, /etc/yum.repos.d에서 활성화시켜 줘야 하는 파일도 여러 개이니 사용하시는 버전에 맞는 것을 잘 찾아보시기 바랍니다. 설정 파일에서 enabled 해놓고 그냥 php-패키지를 설치한 것과, 그렇지 않은 상태에서 --enablerepo 옵션으로 특정 버전을 강제 설치한 것과, 그냥 php73-php-패키지를 설치한 것이 다 다릅니다. 여러 방식을 섞어서 설치하면 난리납니다 ㅠㅠ

  • profile
    기진곰님이 말씀하신 것 처럼, 버전이나 아키텍쳐에 맞지 않는 모듈을 설치하면 해당 증상이 일어날 수 있습니다.

    yum install 시에 사용했던 repo가 무엇인지, 내가 설치한 모듈의 버전이 맞는지를 다시 한번 체크해주세요.
    가급적이면 특정 옵션을 사용해서 yum install을 한다면 위치가 다르거나 버전이 다를 수 있습니다.
  • profile
    php를 설치한 저장소와 php 확장을 설치할 저장소를 서로 맞춰 주셔야 합니다.

    즉 php를 CentOS 기본 저장소에서 설치하셨다면 확장들도 역시 같은 곳에서 설치하셔야 하며, webtatic에서 설치하신 경우 역시 확장도 같은 저장소에서 설치하셔야 합니다.

    만약 php를 webtatic에서 설치하셨는데 확장은 remi에서 설치하시는 등 혼용하시는 경우 경로가 달라 서로 다른 곳에 설치되거나, 심한 경우 php만 2개 설치되어 웹서버에서 사용하는 php 바이너리와 콘솔에서 사용하는 php 바이너리가 서로 달라질수 있습니다. 이경우 콘솔에서는 잘 뜨는데 웹에서는 인식을 못하는 일이 생깁니다.

    결론은, php나 확장 설치방식을 다시 체크하시고(어떤 명령으로 설치하신건지 여기에 적어주시면 더욱 좋습니다) 둘 다 서로 같은 저장소에서 설치하시면 정상 설치될겁니다.
  • profile
    헉 쉬운게 아니군요 ..ㅜㅜ

서버에 요청 중입니다. 잠시만 기다려 주십시오...