ID: 35288 User updated by: webmaster at negeta dot com Reported By: webmaster at negeta dot com Status: Open Bug Type: ICONV related Operating System: FreeBSD 5.4 -PHP Version: 5.1.0 +PHP Version: 5.1.1 New Comment:
I specified the path of iconv explicitly. I ran './configure --with-iconv=/usr/local', and HAVE_LIBICONV was defined. 'libiconv' comes before 'iconv' when the path is specified. But above priority is inverted when the path is not specified. I was able to avoid this problem by using this difference. I hope 'libiconv' comes before 'iconv' automatically on the system that has both functions. But, I will back out this problem if this difference was designed for changing priority of them manually. Previous Comments: ------------------------------------------------------------------------ [2005-11-23 13:51:20] webmaster at negeta dot com FreeBSD base system has no iconv library which is usable by other executable. FreeBSD does not contain the glibc, and libiconv.so is not installed in base system. I found '/usr/include/sys/iconv.h', but it is used by some kernel modules. Conflict will not occur because PHP does not include "sys/iconv.h." I removed libiconv and ran './configure', then following error occured: % tail -15 config.log configure:19817: gcc -o conftest -g -O2 -R/usr/local/lib -L/usr/local/lib conftest.c -lm -lxml2 -lz -liconv -lm 1>&5 /usr/bin/ld: cannot find -liconv configure: failed program was: #line 19806 "configure" #include "confdefs.h" char xmlInitParser(); int main() { xmlInitParser(); return 0; } ------------------------------------------------------------------------ [2005-11-23 09:29:38] [EMAIL PROTECTED] So you didn't read the comment above those checks? Try removing that libiconv you installed and try again. And make sure the installation of libiconv did NOT write over the system iconv.h !!! ------------------------------------------------------------------------ [2005-11-21 17:49:34] webmaster at negeta dot com I ran "./configure" I only installed libiconv-1.9.2 from FreeBSD ports 'converters/libiconv.' libiconv has C function "iconv" in 'lib/iconv.c', and alias name "libiconv" is defined in 'include/iconv.h.' And a program can use "iconv" as "libiconv." 'configure' detects function "iconv" first. And it detects "libiconv" when "iconv" was not found. And HAVE_ICONV is defined and HAVE_LIBICONV is not defined. When 'ext/iconv/iconv.c :line 68' is compiled, PHP_NAMED_FE(iconv,php_if_iconv, ... is understood as PHP_NAMED_FE(libiconv,php_if_iconv, ... by compiler. Because #ifdef HAVE_LIBICONV #undef iconv #endif skips undefine "iconv." To solve this, I thought that HAVE_LIBICONV is necessary. I read acinclude.m4, and found the order of "iconv" and "libiconv." If 'configure' detect "libiconv" first, then it will define HAVE_ICONV and HAVE_LIBICONV. And if system has only "iconv", then it will not define HAVE_LIBICONV. Maybe Linux system is not influenced by this problem. Because these system has iconv of glibc, and there is no "libiconv." ------------------------------------------------------------------------ [2005-11-21 16:06:49] [EMAIL PROTECTED] What was the configure line used? And where exactly is iconv AND libiconv defined in your system? Do you have 2 different implementations installed under same prefix? If you do, this is not PHP bug and not possible to solve with that patch. ------------------------------------------------------------------------ [2005-11-21 05:35:31] webmaster at negeta dot com > 0. C function "iconv" is exist, and "libiconv" is not. It's not correct and my mistake. Both functions are available in my system. Please check "libiconv" before checking "iconv." Then HAVE_ICONV and HAVE_LIBICONV are defined by configure, and the problem is not reproduce in my system. Please commit this patch if it looks like good. http://www.negeta.com/misc/acinclude.m4.patch ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/35288 -- Edit this bug report at http://bugs.php.net/?id=35288&edit=1