[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