PHP 编译:off_t 未定义

PHP compile: off_t undefined

只是一个简单的问题:我想在执行配置脚本时将 PHP 7.1.6 和 运行 编译成以下问题:

checking size of short... (cached) 2
checking size of int... (cached) 4
checking size of long... (cached) 8
checking size of long long... (cached) 8
checking size of off_t... 0
configure: error: off_t undefined; check your library configuration

这些是我的配置选项:

./configure --prefix=/usr/local/php --disable-all --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-pdo --with-pdo-mysql=/usr/local/mysql --with-zlib=/usr/local --with-zlib-dir=/usr/local --with-ldap=/usr/local --with-curl=/usr/local --with-openssl=/usr/local/ssl --with-libxml-dir=/usr/local --with-iconv=/usr/local --with-iconv-dir=/usr/local --with-pcre-regex=/usr/local --with-pcre-dir=/usr/local --enable-filter --disable-debug --enable-inline-optimization --disable-rpath --disable-static --enable-session --enable-dom --enable-json --enable-ctype --enable-hash --enable-tokenizer --enable-xmlreader --enable-shared --enable-xml --enable-libxml --enable-simplexml --with-pic --enable-bcmath --with-gd --with-freetype-dir=/usr/local --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --enable-gd-native-ttf --enable-mbstring --enable-zip --enable-intl --enable-soap --enable-exif

也许你们中有人能给我一些提示?

我的解决方案只是从 libzip 源复制 "zipconf.h" 到 /usr/local/include/!
这个文件丢失了。

我发现问题是由 LD_LIBRARY_PATH 环境变量中缺少 libzip 库位置引起的。在我的例子中,我添加了 lib 子文件夹,而实际的库安装在 lib64 下。添加正确的路径解决了问题。

libzip 版本与 php 版本不兼容。编译php7.3时使用最新版的libzip会有这个问题,降级就可以了

wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install

可能还有问题: zipconf.h: 没有那个文件或目录 https://github.com/Homebrew/legacy-homebrew/issues/13390

cp php-7.3.0/ext/zip/lib/zipconf.h /usr/local/include/ 

尝试

    $ aclocal

...然后/然后/...

    $ autoreconf ./configure.ac

...最后...

    $ ./configure

这为我解决了同样的问题。如果您从源代码安装了 libzip,则可能需要 运行 在 /usr/lib64 上进行 ldconfig。

我在上述 post 一年多后再次遇到这个问题,所以这进一步阐明了我的机器的解决方案。就我而言,我正在尝试使用比当时 CentOS 上可用的 RPM 更新的 libzip 版本编译 PHP 7.3。我也必须从源代码编译 libzip。在我的例子中,构建的 HTTPD、PHP 和 libzip 都安装在 /usr/local 子目录中。通过执行以下操作,我能够 PHP 进行构建:

echo '/usr/local/lib64
>/usr/local/lib
>/usr/lib
>/usr/lib64'>>/etc/ld.so.conf
ldconfig -v

然后从我的构建目录:

./config.nice
make
make install

将我的本地目录添加到上面的动态库配置的提示来自这个post:

https://programmer.group/lnmp-centos7-install-php7.3-nginx-1.4-deploy-and-install-wordpress.html

根据我的配置(PHP 7.3.7 和 Centos 7.6.1810),解决方案是 Anastas Giokov 的回应和 kkuhrman 的回应的混合:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PHP_DIR/build-src/srclib/libzip-1.2.0/lib"

ln -s ../lib/zipconf.h $PHP_DIR//build-src/srclib/libzip-1.2.0/include/zipconf.h