[FYI] PHP 7.3系? コンパイルノウハウ

自分の為のログです。

最近はPHPをコンパイルして使う人達も少なくなりましたね…まあdnfなりyumでいきなり入りますし。とは言え、最新版を追う必要がある仕事ではまだまだコンパイルするというノウハウは必要だと思います。という訳でここ数日でハマったやつを軒並み。

configure: error: utf8_mime2text()

checking for U8T_DECOMPOSE...
configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

まず、utf8系のコンパイルエラー。解決策はこちら

(CentOS 6-7) yum install libc-client-devel
(CentOS 8) dnf install libc-client-devel

lconfigure: error: Please reinstall the libzip distribution

configure: error: Please reinstall the libzip distribution

PHP 7.3 系のコンパイルオプションで enable-zip を付けていると出てくるエラーです。そのままの通り、dnf で libzip と libzip-devel を入れても通らない。フォーラムを探してみると、ありました

Zip:
  . Building against the bundled libzip is discouraged, but still possible by
    adding `--without-libzip` to the configuration.

without-libzip オプションをつけろって事ですね…ちなみに今自分のとこで使っているPHPのオプションはこんな感じです。

  ./configure \
  --with-libdir=lib64 \
  --prefix=/usr/local/php \
  --with-apxs2=/usr/local/apache/bin/apxs \
  --with-curl \
  --enable-zip \
  --enable-calendar \
  --enable-mbstring \
  --enable-mbregex \
  --enable-zend-signals \
  --enable-gd-native-ttf \
  --enable-exif \
  --enable-soap \
  --enable-sockets \
  --enable-opcache \
  --enable-xml \
  --enable-dom \
  --enable-apc \
  --enable-apcu \
  --with-config-file-path=/usr/local/php/lib/ \
  --with-openssl \
  --with-mysqli=mysqlnd \
  --with-pdo-mysql=mysqlnd \
  --with-xsl \
  --with-libxml-dir=/usr/local \
  --with-zlib-dir=/usr/local \
  --with-zlib \
  --with-imap \
  --with-imap-ssl \
  --with-kerberos \
  --with-gettext \
  --with-tidy \
  --with-iconv \
  --with-gd \
  --without-libzip \
  --with-freetype-dir=/usr/local \
  --with-png-dir=/usr/local \
  --with-jpeg-dir=/usr/local

この手のコンパイルオプションって時代と共に変わってきたりするのですが、必要なノウハウはどんどん廃れていってバイナリインストール(dnfやyum)になっています。でも、最後はソースコードを読めないとトラブル時、特にyumの競合とかは解決できないと思うんだけれどなぁ…と思わなくなもないです。

ただ、予算が少ないプロジェクトは容赦無く dnf 導入して簡単な設定ファイルで終わらせます(笑)

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください