PHPのExtension zlibをコンパイルする
追記
本稿は、PHP 7.4.x以下向けの記事である。PHP 8.0.x以降では必要ない。
主題
PHPのExtension zlibをコンパイルする手順を述べる。
背景
WordPressを動作させるためには、PHPがzlibをサポートしている必要があるが、外部ライブラリとしてインストールしただけでは、サポートされない。(以下のように表示される)
php -i | grep zlib
gzip compression => disabled (install ext/zlib)
本稿では、PHP extenshinの一つであるzlibをコンパイルする手順を説明する。
手順
-
まず、こちらの手順に従って、PHPをコンパイルし、インストールする。
-
下準備
シンボリックリンクを張りまくる。これが終われば、ほとんど完成である。と、考えたが、検証でめげたのでシェルスクリプトにした。以下の内容をコピーし、
prepare_zlib.sh
というファイル名でデスクトップに保存する。スクリプトには実行権を付与すること。なお、スクリプトはこちらからダウンロードすることもできる。#!/bin/sh ln -nfs config0.m4 config.m4 ln -nfs ../../main/SAPI.h SAPI.h ln -nfs ../../TSRM/TSRM.h TSRM.h ln -nfs ../../main/build-defs.h build-defs.h ln -nfs ../../main/fopen_wrappers.h fopen_wrappers.h ln -nfs ../../main/php.h php.h ln -nfs ../../main/php_compat.h php_compat.h ln -nfs ../../main/php_globals.h php_globals.h ln -nfs ../../main/php_ini.h php_ini.h ln -nfs ../../main/php_memory_streams.h php_memory_streams.h ln -nfs ../../main/php_network.h php_network.h ln -nfs ../../main/php_reentrancy.h php_reentrancy.h ln -nfs ../../main/php_streams.h php_streams.h ln -nfs ../../main/php_syslog.h php_syslog.h ln -nfs ../../main/php_version.h php_version.h ln -nfs ../../main/snprintf.h snprintf.h ln -nfs ../../main/spprintf.h spprintf.h ln -nfs ../../Zend/zend.h zend.h ln -nfs ../../Zend/zend_API.h zend_API.h ln -nfs ../../Zend/zend_alloc.h zend_alloc.h ln -nfs ../../Zend/zend_alloc_sizes.h zend_alloc_sizes.h ln -nfs ../../Zend/zend_arena.h zend_arena.h ln -nfs ../../Zend/zend_ast.h zend_ast.h ln -nfs ../../Zend/zend_build.h zend_build.h ln -nfs ../../Zend/zend_compile.h zend_compile.h ln -nfs ../../Zend/zend_config.h zend_config.h ln -nfs ../../Zend/zend_constants.h zend_constants.h ln -nfs ../../Zend/zend_errors.h zend_errors.h ln -nfs ../../Zend/zend_execute.h zend_execute.h ln -nfs ../../Zend/zend_float.h zend_float.h ln -nfs ../../Zend/zend_gc.h zend_gc.h ln -nfs ../../Zend/zend_globals.h zend_globals.h ln -nfs ../../Zend/zend_globals_macros.h ln -nfs ../../Zend/zend_hash.h zend_hash.h ln -nfs ../../Zend/zend_ini.h zend_ini.h ln -nfs ../../Zend/zend_iterators.h zend_iterators.h ln -nfs ../../Zend/zend_list.h zend_list.h ln -nfs ../../Zend/zend_llist.h zend_llist.h ln -nfs ../../Zend/zend_long.h zend_long.h ln -nfs ../../Zend/zend_map_ptr.h zend_map_ptr.h ln -nfs ../../Zend/zend_modules.h zend_modules.h ln -nfs ../../Zend/zend_multibyte.h zend_multibyte.h ln -nfs ../../Zend/zend_multiply.h zend_multiply.h ln -nfs ../../Zend/zend_object_handlers.h zend_object_handlers.h ln -nfs ../../Zend/zend_objects.h zend_objects.h ln -nfs ../../Zend/zend_objects_API.h zend_objects_API.h ln -nfs ../../Zend/zend_operators.h zend_operators.h ln -nfs ../../Zend/zend_portability.h zend_portability.h ln -nfs ../../Zend/zend_ptr_stack.h zend_ptr_stack.h ln -nfs ../../Zend/zend_range_check.h zend_range_check.h ln -nfs ../../Zend/zend_signal.h zend_signal.h ln -nfs ../../Zend/zend_smart_str_public.h zend_smart_str_public.h ln -nfs ../../Zend/zend_smart_string_public.h zend_smart_string_public.h ln -nfs ../../Zend/zend_sort.h zend_sort.h ln -nfs ../../Zend/zend_stack.h zend_stack.h ln -nfs ../../Zend/zend_stream.h zend_stream.h ln -nfs ../../Zend/zend_string.h zend_string.h ln -nfs ../../Zend/zend_strtod.h zend_strtod.h ln -nfs ../../Zend/zend_types.h zend_types.h ln -nfs ../../Zend/zend_variables.h zend_variables.h ln -nfs ../../Zend/zend_virtual_cwd.h zend_virtual_cwd.h ln -nfs ../../Zend/zend_vm_opcodes.h zend_vm_opcodes.h mkdir -p TSRM cd TSRM ln -nfs ../../../TSRM/TSRM.h TSRM.h mkdir -p main cd main ln -nfs ../../../../main/php_stdint.h php_stdint.h cd ../../ mkdir -p ext/standard cd ext/standard ln -nfs ../../../standard/file.h file.h ln -nfs ../../../standard/info.h info.h ln -nfs ../../../standard/php_string.h php_string.h cd ../../ mkdir -p main cd main ln -nfs ../../../main/php_config.h php_config.h ln -nfs ../../../main/php_network.h php_network.h ln -nfs ../../../main/php_output.h php_output.h ln -nfs ../../../main/php_stdint.h php_stdint.h cd ../ mkdir -p streams cd streams ln -nfs ../../../main/streams/php_stream_context.h php_stream_context.h ln -nfs ../../../main/streams/php_stream_filter_api.h php_stream_filter_api.h ln -nfs ../../../main/streams/php_stream_glob_wrapper.h php_stream_glob_wrapper.h ln -nfs ../../../main/streams/php_stream_mmap.h php_stream_mmap.h ln -nfs ../../../main/streams/php_stream_plain_wrapper.h php_stream_plain_wrapper.h ln -nfs ../../../main/streams/php_stream_transport.h php_stream_transport.h ln -nfs ../../../main/streams/php_stream_userspace.h php_stream_userspace.h
スクリプトの実行
cd php-7.4.12/ext/zlib cp ~/Desktop/prepare_zlib.sh . ./prepare_zlib.sh
-
phpizeのシンボリックリンクを貼る
sudo ln -s /usr/local/php-7.4.12/bin/phpize \ /usr/local/bin/phpize
-
コンパイルとインストール
cd php-7.4.12/ext/zlib phpize ./configure make cd modules sudo cp -p zlib.so /usr/local/php-7.4.12/lib/php/extensions/no-debug-zts-20190902
-
php.iniの編集
php.iniを編集しzlib拡張機能を有効化する。cd /usr/local/php-7.4.12/lib sudo nano php.ini
記載内容
extension=zlib
確認
php -i | grep zlib
Registered PHP Streams => https, ftps, php, file, glob, data, http, ftp, compress.zlib, zip, phar Registered Stream Filters => convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.* zlib Stream Wrapper => compress.zlib:// Stream Filter => zlib.inflate, zlib.deflate zlib.output_compression => Off => Off zlib.output_compression_level => -1 => -1 zlib.output_handler => no value => no value
-
Apacheの再起動
sudo apachectl -k stop sudo apachectl -k start
Webサーバーでの確認
以下のようなリンクを開き、出力内容にZlibの項目があることを確認する。http://localhost/~yourLoginName/info.php
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント