[freetds] php undefined symbol: mssql_module_entry (cannot load phpwith --with-mssql=/usr/local/freetds)
Daniel Fazekas
fdsubs at t-online.hu
Wed Nov 8 19:57:01 EST 2006
On Nov 8, 2006, at 21:04, Carlos García wrote:
> php -m does NOT list mssql.
Okay, then it's quite certain that your problem is in building php,
but I guess we knew that already.
Just to be certain, when you say
php -m
did not list mssql, what you really mean is that
/wwwroot/php/bin/php -m
gave you this output.
Or that you did
cd /wwwroot/php/bin/php
./php -m
with emphasis on the "./"
I'm asking because I suspect your problem may be due to having
multiple copies, different versions of PHP or FreeTDS on your system.
> FREETDS VERSION
> [root at qonos php]# tsql -C
> Compile-time settings (established with the "configure" script)
> Version: freetds v0.65.dev.20061103
> freetds.conf directory: /usr/local/etc
> MS db-lib source compatibility: yes
> Sybase binary compatibility: no
> Thread safety: yes
> iconv library: yes
> TDS version: 5.0
> iODBC: no
> unixodbc: no
> Please note it says v0.65, even though I downloaded the
> "stable"version
> from freetds, which generated 0.64
> freetds-0.64
> freetds-stable.tar
See, this part is quite unexplainable to me other than to think you
do have multiple copies of FreeTDS on your system -- including
v0.65.dev.20061103 in its default location of /usr/local, which you
are running above.
That copy of tsql above says:
> freetds.conf directory: /usr/local/etc
That implies the default FreeTDS installation prefix of /usr/local
Earlier you wrote that to compile PHP, you used:
> --with-mssql=/usr/local/freetds
That would imply a freetds.conf directory of /usr/local/freetds/etc
instead.
So a guess would be that you got FreeTDS v0.65.dev.20061103 installed
into /usr/local and FreeTDS v0.64 inside /usr/local/freetds. I also
suspect multiple copies of php.
That's why you shouldn't just do a "php -m" or a
> [root at qonos php]# tsql -C
Use
/usr/local/freetds/bin/tsql -C
instead, to make sure you are running the copy you intented to run.
Without a pathname specified, it's up to your shell to figure out
what you meant based on your aliases, functions, your PATH
environment and so on.
It will tell its guess if you ask:
command -V php tsql
php is /usr/bin/php
tsql is /usr/local/bin/tsql
(Where proper output for you based on your first messages would be
php is /wwwroot/php/bin/php
tsql is /usr/local/freetds/bin/tsql
What I suspect is that it's none of those and you have a duplicate
copy of both php and FreeTDS elsewhere.)
> MESSAGES ON MAKE
> There a 2 mega-lines concerning mssql; nothing useful for me; I've
> pasted them below.
It looks like you are not actually compiling anything, just linking now.
I'd then next try to rebuild PHP from scratch.
Start with a
make clean
then try "./configure"-ing and "make"-ing php again. (And finally
"make install" as root.)
--
fds
More information about the FreeTDS
mailing list