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のWebサイトでは、すべての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を設定します。

おすすめ記事