php 7.4.x ソースインストール

この記事は約14分で読めます。

php 7.3.xから、php 7.4.x(今回は、php 7.4.4)にアップデートしたときのレシピを!

php 7.4.x、configure オプションの変更

./configure --with-pdo-mysql --with-mysqli --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-zip --with-libxml-dir=/usr --with-freetype-dir=/usr/local/lib --enable-gd-jis-conv --enable-cgi --with-curl --enable-opcache --without-libzip --with-openssl --enable-intl --with-gettext

↑今までは、このようなオプションで設定をしてきました。

この設定は、php-fpmでの設定です。
参考記事:Nginx 1.14,php 7.3 (PHP-FPM), MySQL 5.7,SSL (Let’s Encrypt),CentOS7への導入手順

--with-gd, --with-jpeg-dir, --with-png-dir, --enable-zip, --with-libxml-dir, --with-freetype-dir, --without-libzip

↑のオプションは、変更されたようです・・・
--enable-gd --with-jpeg --with-webp --with-xpm --with-freetype --enable-gd-jis-conv --with-zip

↑というオプションで、設定をします。
# yum install libwebp libwebp-devel

↑webpのライブラリーを入れておきます。
./configure --with-pdo-mysql --with-mysqli --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mbstring --enable-ftp --with-zlib --enable-gd-jis-conv --enable-cgi --with-curl --enable-opcache --with-openssl --enable-intl --with-gettext --enable-gd --with-jpeg --with-webp --with-xpm --with-freetype --enable-gd-jis-conv --with-zip

↑このオプションで設定をします

SQLite3

checking whether to enable the SQLite3 extension... yes
checking for sqlite3 > 3.7.4... no
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:

No package 'sqlite3' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables SQLITE_CFLAGS
and SQLITE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

↑sqlite3が無いよ、と、怒られます
# yum install sqlite sqlite-devel

↑sqliteを入れます。

icu

checking whether to enable internationalization support... yes
checking for icu-uc >= 50.1 icu-io icu-i18n... no
configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

No package 'icu-uc' found
No package 'icu-io' found
No package 'icu-i18n' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ICU_CFLAGS
and ICU_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

↑icu関係が無いよ、と怒られます。

該当サーバーには、icuは、以前にインストールをしていて・・・

Postfix 3.4 ソースインストール CentOS7(マルチドメイン)(過去記事)

# find / -name '*icu-uc*' -print
/usr/local/lib/pkgconfig/icu-uc.pc

↑と、icu-uc関係のファイルを探します。
# export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"

↑と設定をします。ログインし直したりすると、環境変数がリセットされるので、.bashrcなどに記載をするほうがいいかと。

鬼車 oniguruma

checking for oniguruma... no
configure: error: Package requirements (oniguruma) were not met:

No package 'oniguruma' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ONIG_CFLAGS
and ONIG_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

↑onigurumaが、無いよ。ということで、
# yum install oniguruma oniguruma-devel

↑onigurumaを入れます。

再度、configure

./configure --with-pdo-mysql --with-mysqli --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mbstring --enable-ftp --with-zlib --enable-gd-jis-conv --enable-cgi --with-curl --enable-opcache --with-openssl --enable-intl --with-gettext --enable-gd --with-jpeg --with-webp --with-xpm --with-freetype --enable-gd-jis-conv --with-zip
++++++(略)+++++++++++

Generating files
configure: patching main/php_config.h.in
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/fpm/php-fpm.conf
config.status: creating sapi/fpm/www.conf
config.status: creating sapi/fpm/init.d.php-fpm
config.status: creating sapi/fpm/php-fpm.service
config.status: creating sapi/fpm/php-fpm.8
config.status: creating sapi/fpm/status.html
config.status: creating sapi/phpdbg/phpdbg.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands

+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE. By continuing this installation  |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

↑これで、php 7.4.x の、configureが通りました。

php 7.4.x make、make install

LS   -c /root/php-7.4.4/ext/fileinfo/libmagic/apprentice.c -o ext/fileinfo/libmagic/apprentice.lo 
virtual memory exhausted: Cannot allocate memory
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

↑メモリ不足・・・・となり、makeが途中で止まる(汗)

不必要なサービスを停止して

# make clean
# make

(略)

PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
clicommand.inc
pharcommand.inc
invertedregexiterator.inc
directorytreeiterator.inc
directorygraphiterator.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

↑make 完了!
# make install
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20190902/
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/php/man/man1/
Installing PHP FPM binary:        /usr/local/sbin/
Installing PHP FPM defconfig:     skipping
Installing PHP FPM man page:      /usr/local/php/man/man8/
Installing PHP FPM status page:   /usr/local/php/php/fpm/
Installing phpdbg binary:         /usr/local/bin/
Installing phpdbg man page:       /usr/local/php/man/man1/
Installing PHP CGI binary:        /usr/local/bin/
Installing PHP CGI man page:      /usr/local/php/man/man1/
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/man/man1/
  page: phpize.1
  page: php-config.1
/root/php-7.4.4/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f phar.phar /usr/local/bin/phar
Installing PDO headers:           /usr/local/include/php/ext/pdo/

↑php 7.4.x インストール完了

GDのエラー時・・・

ワードプレスのログイン時に、


Fatal error: Uncaught Error: Call to undefined function imagecreatetruecolor() in /var/www/web/wp-content/plugins/siteguard/really-simple-captcha/siteguard-really-simple-captcha.php:178 Stack trace: #0 /var/www/web/wp-content/plugins/siteguard/classes/siteguard-captcha.php(186): SiteGuardReallySimpleCaptcha->generate_image(226552458, '\xE3\x81\xBF\xE3\x81\xB5\xE3\x81\x9B\xE3\x81\xB2') #1 /var/www/web/wp-content/plugins/siteguard/classes/siteguard-captcha.php(192): SiteGuard_CAPTCHA->put_captcha() #2 /var/www/web/wp-includes/class-wp-hook.php(288): SiteGuard_CAPTCHA->handler_login_form('') #3 /var/www/web/wp-includes/class-wp-hook.php(312): WP_Hook->apply_filters('', Array) #4 /var/www/web/wp-includes/plugin.php(478): WP_Hook->do_action(Array) #5 /var/www/web/wp-login.php(1376): do_action('login_form') #6 {main} thrown in /var/www/web/wp-content/plugins/siteguard/really-simple-captcha/siteguard-really-simple-captcha.php on line 178

サイトに重大なエラーがありました。 詳細については、サイト管理者のメール受信ボックスを確認してください。

WordPress でのデバッグをさらに詳しく見る。

上記のようなエラーが出るときがあります。
これは、「GD」オプションが有効になっていない時に発生します。
実際には、「SiteGuard」というプラグインで、「画像認証」が有効になっている時に、エラーが発生します。
「phpinfo」をチェックして、「GD」が有効になっているか、確認しましょう。

タイトルとURLをコピーしました