Jump to content

Setup issue: PHP, Apache and MSSQL (cant find mssql?)


Recommended Posts

Hi all,

 

Been struggling for 2 days now. Installed WAMP with Apache 2.2. PHP runs fine, but I cant connect to MSSQL. The mssql extension is uncommented in php.ini, and the dll exists in the 'ext' directory (see attached images). Everything seems to be fine, and where it should be....but it cant connect to MSSQL. Its not the servername, username or password...it it were it would be a different message....this is saying mssql is not installed when it clearly is?

 

I know MSSQL is not installed by running code below:

 

if (function_exists('mssql_connect')){
echo "Okay, fn is there<br>------------------<br>";
} else {
echo "Hmmm .. fn is not even there<br>------------------<br>";
}

if(extension_loaded("mssql")) {
echo "MSSQL is Loaded<br>";
}
else {
echo "MSSQL not loaded<br>";
}

if(extension_loaded("msql")) {
echo "MSQL is Loaded<br>";
}
else {
echo "MSQL not loaded<br>";
}
echo '<br><br>';

$ext = get_loaded_extensions();
if(in_array('mssql', $ext))
echo 'u have mssql installed<br><br>';
else
echo 'u do NOT have mssql installed<br><br>';

 

Above displays:

Hmmm .. fn is not even there
------------------
MSSQL not loaded
MSQL not loaded

u do NOT have mssql installed

 

Extensions from php.ini

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_ming.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll      
;extension=php_oci8_11g.dll 
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll
extension=php_pdo_mssql.dll
extension=php_pdo_sqlsrv_52_nts_vc6.dll
extension=php_msql.dll
extension=php_dblib.dll
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
;extension=php_pdo_sqlsrv_52_ts_vc6.dll
;extension=php_pdo_sqlsrv_52_ts_vc6.dll
;extension=php_pdo_sqlsrv_52_ts_vc6.dll
;extension=php_pdo_sqlsrv_52_ts_vc6.dll
;extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo.dll

 

Extension directories from phpinfo.php

Configuration File (php.ini) Path 	C:\windows 
Loaded Configuration File 	C:\wamp\bin\apache\Apache2.2.17\bin\php.ini 

 

I set debug to true, ran code that tries to connect to a mssql server, get error message below:

Fatal error: Call to undefined function mssql_query() in C:\wamp\www\website\include\adodb\drivers\adodb-mssql.inc.php

 

I have the ntwdblib.dll file in the root php folder (as seen in the attached images, correct version....its the older one...not the newer one which apparently gets corrupted), so all is as it should be...but I still cant connect!

 

Please help....have search the net but everything I try doesnt seem to help :(

 

[attachment deleted by admin]

Link to comment
Share on other sites

Hi...

 

mSQL != MSSQL, so using the mSQL extension makes no sense.

 

 

Additionally, unless your code has some existing dependency on the MSSQL extension (mssql_* functions), you should be using MS's extension http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

 

If you do have code depedent on mssql_*, I suggest recoding it, but if it's a big project that might not be possible.  Anyway, php_mssql.dll depends on a dll originally in MSSQL 2000 (I don't think the DLL exists in SQL Serv 2005/2008).  I don't remember what the DLL is called, unfortunately, and I have no idea where to get it these days.

 

Anyway, you'll likely want to run PHP from the command line or check the Apache error log to see exactly why the extension's not loading.

 

 

 

 

(Also, on a semi related note: I usually use PDO for MSSQL related stuff [actually all DB related stuff, really].  That way it's easier to switch between mssql extensions if need be.)

Link to comment
Share on other sites

Hi...

 

mSQL != MSSQL, so using the mSQL extension makes no sense.

 

Ok, thanks for the info, I added the ";" back in front in php.ini

 

Additionally, unless your code has some existing dependency on the MSSQL extension (mssql_* functions), you should be using MS's extension http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

 

If you do have code depedent on mssql_*, I suggest recoding it, but if it's a big project that might not be possible.  Anyway, php_mssql.dll depends on a dll originally in MSSQL 2000 (I don't think the DLL exists in SQL Serv 2005/2008).  I don't remember what the DLL is called, unfortunately, and I have no idea where to get it these days.

 

Yeah, have code dependent on mssql and to recode, damn...it really is not an option now :( The DLL it depends on is called ntwdblib.dll. There is a 2004 version(incorrect one) and a 2000 version(correct version). I am using the correct version from SQL 2000.

 

Anyway, you'll likely want to run PHP from the command line or check the Apache error log to see exactly why the extension's not loading.

 

Checked the Apached error log, no more errors....just warnings now:

 

PHP Warning:  PHP Startup: mssql: Unable to initialize module\nModule compiled with module API=20060613\nPHP    compiled with module API=20090626\nThese options need to match\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: mssql: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match
in <b>Unknown</b> on line <b>0</b><br />
PHP Warning:  PHP Startup: pdo_mssql: Unable to initialize module\nModule compiled with module API=20060613\nPHP    compiled with module API=20090626\nThese options need to match\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: pdo_mssql: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match
in <b>Unknown</b> on line <b>0</b><br />
PHP Warning:  PHP Startup: pdo_mssql: Unable to initialize module\nModule compiled with module API=20060613\nPHP    compiled with module API=20090626\nThese options need to match\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: pdo_mssql: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match
in <b>Unknown</b> on line <b>0</b><br />
PHP Warning:  PHP Startup: mssql: Unable to initialize module\nModule compiled with build ID=API20090626,TS,VC9\nPHP    compiled with build ID=API20090626,TS,VC6\nThese options need to match\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: mssql: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC9
PHP    compiled with build ID=API20090626,TS,VC6
These options need to match
in <b>Unknown</b> on line <b>0</b><br />
PHP Warning:  PHP Startup: PDO: Unable to initialize module\nModule compiled with module API=20060613\nPHP    compiled with module API=20090626\nThese options need to match\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: PDO: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match
in <b>Unknown</b> on line <b>0</b><br />
PHP Warning:  PHP Startup: mssql: Unable to initialize module\nModule compiled with module API=20060613\nPHP    compiled with module API=20090626\nThese options need to match\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: mssql: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match
in <b>Unknown</b> on line <b>0</b><br />
[Wed Mar 30 19:45:15 2011] [notice] Child 4132: Child process is running

 

(Also, on a semi related note: I usually use PDO for MSSQL related stuff [actually all DB related stuff, really].  That way it's easier to switch between mssql extensions if need be.)

 

I think I will need to use the Microsoft solution. I tried this, but had no luck...guess its time to try again!

Link to comment
Share on other sites

UPDATE:

 

Well, I have to say Im not impressed with WAMP at all. Added...I tried EasyPHP (similar to WAMP) and had no luck either. I then tried the MSI installed from php.net....surprise...same result...no luck. PHP runs in all, dont get me wrong....but with errors and warnings all over the place.

 

BUT! I found a way to get it all working...not ideal...but its running - PHP, IIS 7.5 and SQL Server. Now I can run ASP pages and PHP pages all from the same location. I did the manual install....pretty much as below:

 

My step by step process:

[*]Install PHP 5.2 from zip file downloaded from php.net

[*]Save to C:\php

[*]In php.ini add the following configuration setting:  cgi.force_redirect = 0. This is the minimum setting you need to change to make PHP work with IIS. You may also want to use cgi.fix_pathinfo = 1, fastcgi.impersonate = 1, and set ext_dir.\

[*]Install IIS (Running with IIS 7 / 7.5)

[*]Activate the World Wide Web Services/Application Development Features/CGI node and also Web Management Tools/IIS Management Console.

[*]Now, start the IIS Management Console. There, navigate to the Sites/Default Web Site/Handler Mappings node and double-click on the "Handler Mappings" entry.

[*]As a result of this, the Actions panel on the right hand side changes. You now see an option called Add Module Mapping. Clicking on it opens up a dialog which you fill out as you can see in the following figure - PIC 1 (you may need to adapt the path used to your local system).

[*]If you do not see the FastCgiModule entry, you probably forgot to check the CGI node when installing IIS. Otherwise, close the Add Module Mapping dialog by clicking on OK. You need to confirm that you want to create a FastCGI application; click Yes.

[*]Finally, create a .php script and put it in the root folder of the IIS site (by default C:\Inetpub\wwwroot; note that you may need additional rights to write into that directory), e.g. phpinfo.php with a simple phpinfo() call in it. Call this script using http://localhost/phpinfo.php. PHP installed and running. Continue below for SQL Server extension setup...

[*]Stop IIS

[*]Go to php.ini and uncomment extension=php_mssql.dll.

[*]Make sure ntwdblib.dll is as per version below. It must reside in the php folder - PIC 2.

[*]Update E_ALL to E_ERROR.

[*]Restart IIS, and check database can connect. Should be working now!

 

I hope this helps someone, because I have pretty much wasted this week trying to get this working....projects have been delayed....its been a real frickin mess. I have now saved the above every-frickin-where....so it will never get lost and this wont happen again!!  :P:D

 

[attachment deleted by admin]

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.