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
只是一个简单的问题:我想在执行配置脚本时将 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