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 15
/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=35288edit=1