PHP는 zlib 모듈로 컴파일되지만 phpinfo()는 비활성화되어 있음을 보여줍니다.

PHP는 zlib 모듈로 컴파일되지만 phpinfo()는 비활성화되어 있음을 보여줍니다.

Joomla! 4.3.1을 사용하기 위해 zlib 압축을 지원하는 Oracle Linux 8.6 서버에서 PHP 8.2를 컴파일했습니다.

# php --ri zlib

zlib

ZLib Support => enabled
Stream Wrapper => compress.zlib://
Stream Filter => zlib.inflate, zlib.deflate
Compiled Version => 1.2.11
Linked Version => 1.2.11

Directive => Local Value => Master Value
zlib.output_compression => On => On
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value
# php -m
[PHP Modules]
bcmath
bz2
(...)
zip
zlib

나는 활성화했으며 zlib.output_compression = On이것은 /etc/php.iniPHP에서 사용하는 구성 파일입니다.

# php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      (none)

그래도 phpinfo();gzip 압축이 비활성화되어 있음이 표시됩니다. phpinfo() 출력

PHP가 왜 이런 식으로 동작하는지 아는 사람이 있나요?

참고: 다음 매개변수를 사용하여 컴파일했습니다.

./configure --prefix=/usr --disable-rpath --disable-debug --enable-calendar --enable-sysvshm  --enable-bcmath --with-bz2 --enable-ctype --enable-exif --enable-ftp --with-gettext --enable-mbstring --enable-shmop --enable-sockets --with-zlib=/usr --without-pgsql --disable-static --with-layout=GNU --with-curl=/usr --with-mhash=/usr --with-unixODBC=/usr --with-snmp=shared --enable-soap --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-zip --with-pdo-mysql --with-mysqli --with-openssl --enable-fpm --with-kerberos --with-xsl --enable-opcache --enable-intl --with-pear --with-oci8=instantclient,/usr/lib/oracle/21/client64/lib --with-config-file-scan-dir=/etc/php.d

미리 감사드립니다.

답변1

Phar zlib 지원은 PHP의 zlib 지원과 다릅니다. 그게 전부입니다. phar는 코드 아카이브 형식입니다. zlib 압축 지원이 활성화되어 있지 않다고 해서 zlib가 PHP의 다른 부분에서 작동하지 않는다는 의미는 아닙니다.

오해의 여지가 있는 PHP 오류 메시지와 문서는 새로운 것이 아닙니다! 이 경우 "ext/zlib 설치"로 인해 잘못된 결과를 얻었을 것입니다. 이는 아마도 PHP의 기본 zlib 지원이 아닌 별도의 확장일 것입니다.

귀하의 노력에 대한 친절한 의견: 저는 처음부터 PHP를 구축하지 않을 것입니다. 추천을 받은 경우

  • 잘 관리되고 안전하게 업데이트된 PHP 8.2 버전이 포함된 배포판이 포함된 Podman 컨테이너를 시작합니다.
  • 또는 해당 배포판에서 CentOS로 PHP 8.2 rpm을 백포트하세요.

PHP 8.2는 아직 매우 어리기 때문에(당신은진짜필요해? 최신 최첨단 소프트웨어가 반드시 서버 애플리케이션에 최선의 선택은 아닙니다! Joomla의 웹 사이트에서는 모든 PHP 8.x가 충분하므로 배포판에 잘 패키지된 8.0.27을 사용할 수 있고 번거롭지 않고 잘 테스트된 소프트웨어를 사용할 수 있다고 말합니다. 배포판 선택은 아마도 fedora 38일 것입니다(현재 CentOS 스트림9에는 패키지되지 않음) /rhel9/alma9).

컨테이너 설정은 매우 간단하며 Dockerfile에는 아무것도 포함되지 않습니다.

FROM fedora:38

RUN dnf install --refresh -y php-fpm && dnf clean all 

ENTRYPOINT php-fpm
EXPOSE 9000

를 사용하여 동일한 디렉터리에서 빌드합니다 podman build Dockerfile. 실행 podman run하고 인수를 사용하여 -v내부에서 실행 중인 PHP와 필요한 디렉토리를 공유합니다. PHP 지원을 위해 fastcgi를 통해 포트 9000에 연결하도록 nginx 또는 Apache를 구성하세요.

관련 정보