On Tue, April 11, 2006 11:45 am, Laszlo Nagy wrote:
> I have a problem with a Win2003 server, IIS6 and PHP 5.1.2. I have
> Microsoft SQL Server tools installed. C:\PHP is on the path. Extension
> dirs are configured correctly. The php_mssql.dll is present there.
> Everything looks okay, except that the server does not load the
> extension. If I do
>
> var_dump(get_loaded_extensions())
>
> then I get this:
>
> array(23) { [0]=> string(6) "bcmath" [1]=> string(8) "calendar" [2]=>
> string(10) "com_dotnet" [3]=> string(5) "ctype" [4]=> string(4) "date"
> [5]=> string(3) "ftp" [6]=> string(5) "iconv" [7]=> string(4) "odbc"
> [8]=> string(4) "pcre" [9]=> string(10) "Reflection" [10]=> string(7)
> "session" [11]=> string(6) "libxml" [12]=> string(8) "standard" [13]=>
> string(9) "tokenizer" [14]=> string(4) "zlib" [15]=> string(9)
> "SimpleXML" [16]=> string(3) "dom" [17]=> string(3) "SPL" [18]=>
> string(4) "wddx" [19]=> string(3) "xml" [20]=> string(9) "xmlreader"
> [21]=> string(9) "xmlwriter" [22]=> string(5) "ISAPI" }
>
> What am I doing wrong? Please help me. I was trying for a week and
> nobody could help me on the hungarian PHP list. I'm lost.

Step #1:
Create and surf to a phpinfo() file:
<?php phpinfo();?>

Check the "php.ini" setting in the top portion to see where php.ini
MUST BE for it to be read.

This directory was set at compile-time, by whomever happened to
compile the php.exe (and dll) that day.

You can't change it ; You have to live with it.
[Actually, in recent Apache versions, you can use an httpd.conf
setting to alter it, but let's not confuse things that are
version-specific]

Step #2:
Find your php.ini file, and MOVE it to where phpinfo() wants it to be.

If you have no php.ini file, find the php.ini-dist file, copy it, and
rename it.

Step #3
In php.ini look at the "extensions_dir" setting.
Fix it.


One thing is clear from your output:  You've GOT a lot of extensions
working, so you probably already have all of this correct.

Nevertheless, you follow the first 3 steps because that's just the way
you make SURE you have things set up like you think you have them set
up, even if it all "looks good"...

Step #4.
Compare version numbers of your mssql_php.dll and the version of PHP
you are running.  You CANNOT mix-n-match old DLLs with new PHP and
vice versa.  It will sometimes "work" until you happen to use the one
function that CHANGED between versions.

If you just went out and found some random mssql_php.dll to throw in
the directory, it is NOT going to work.

In recent PHP versions, I think it won't even let you screw this up,
as each module is, I think, tagged with an internal version reference
number and  PHP will reject invalid DLLs.  I think...  But in the old
days, it was a common mistake for folks to install mis-matched DLL
versions and have all kinds of trouble.

Step #4a
Check your log files.  I'm assuming ISS actually HAS logfiles...  It
must have, right?  Might be in system events log.  Might be in an
"error_log" file next to your IIS web traffic logs.  Knowing
Microsoft, it might be *ANYWHERE*...  But, wherever it is, find it,
and read it.  If all else fails, you can surf to PHP, and then use
Explorer to search for files changed in the past five minutes.  Or, at
least, I think it will let you search in the past five minutes. 
Yesterday I went looking to do that and could only find files changed
in the past day.  Ugh.
I'm guessing that you might find an error message about the
mssql_php.dll being the wrong version...

Step #5.
Switch to a superior web server: Apache
:-)

Step #6.
Switch to a superior OS like Linux or FreeBSD
:-) :-) :-)

-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to