这个问题是我在 FutureApple 的一台 CentOS Stream 9 服务器上发现的,具体表现为编译安装 / 快速安装 PHP 8.0 及以上版本时会发生如下编译报错:
checking if we're at 64-bit platform... yes
checking for iconv support... yes
checking for libiconv in -liconv... yes
checking if iconv is glibc's... yes
checking if iconv supports errno... no
configure: error: iconv does not support errno
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target 'install'. Stop.
解决方案
此处解决方案涉及对宝塔 php 安装脚本修改,且本解决方案可能不适用于任何系统。
已经测试的系统有:CentOS Stream 9 , Debian 11 均为 amd64
一键修复
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz && tar -xzvf libiconv-1.17.tar.gz && cd libiconv-1.17 && ./configure && make && make install && sed -i "s/--with-iconv-dir/--with-iconv=\/usr\/local/g" /www/server/panel/install/php.sh && chattr +i /www/server/panel/install/php.sh
安装 libiconv
可能部分精简版的系统会缺少足够高版本的 libiconv,这里将编译安装,进入 Libiconv 下载最新版本并解压,编译安装到系统默认目录
懒人指令(写作时最新版本为 1.17
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz && tar -xzvf libiconv-1.17.tar.gz && cd libiconv-1.17 && ./configure && make && make install
魔改安装脚本
下载来自宝塔的 php.sh 或直接在服务器上修改(/www/server/panel/install/php.sh)找到编译部分,进行修改,在原文件中找到 –with-iconv-dir ,全部替换为 –with-iconv=/usr/local ,需要替换的位置在:565 568 571 573 592 行
最后,将你更改好的 php.sh 放在 /www/server/panel/install/php.sh ,为防止每次安装前下载 php.sh 使更改失效,使用 chattr +i /www/server/panel/install/php.sh 锁定文件。然后在宝塔中安装即可。
懒人指令
sed -i "s/--with-iconv-dir/--with-iconv=\/usr\/local/g" /www/server/panel/install/php.sh && chattr +i /www/server/panel/install/php.sh
了解 Paradise Lost 的更多信息
Subscribe to get the latest posts sent to your email.
Comments NOTHING