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.ini
PHPで使用される設定ファイルです。
# 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圧縮が無効になっていることが表示されます。
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を設定します。