4

PHP から MS SQL 2005 への接続に問題があります。

...を使用して、シェルから接続できます...

tsql -S 10.0.0.134 -p 1433  -U gareth 

簡単なクエリを入力すると、期待どおりに機能します...

1> SELECT @@VERSION AS MSSQL_VERSION
2> go
MSSQL_VERSION   
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
Nov 24 2008 13:01:59 
Copyright (c) 1988-2005 Microsoft Corporation
Express Edition on Windows NT 6.1 (Build 7601: Service Pack 1)

ただし、PHPスクリプトからこれを試してもうまくいきません...

$test = mssql_connect('10.0.0.134:1433', 'gareth', 'mypass');

...そして mssql_connect() [function.mssql-connect]: Unable to connect to server エラーを生成します。

/usr/lib/php/modules に mssql.so モジュールがあり、phpinfo() はモジュールが読み込まれていることを示しています。

誰かが freetds.conf と odbc.conf の設定例を見せてくれれば、代わりに odbc_connect を使用したいと思います

ありがとう

4

1 に答える 1

5

あなたの問題についてPHP.netで見つけたものは次のとおりです。多分それはあなたがそれを解決するのを助けるでしょう.

This might be obvious to some, but here is a quick tidbit that might save you some time if you are using FreeTDS in Linux:
Be sure that you have these two lines in freetds.conf:
dump file = /tmp/freetds.log
dump file append = yes

so you can tail -f it in the background of debugging the problem.  This helped me find my issue on on CentOS Linux: 

1) tsql test works

2) php-mssql connection in php also works WHEN RUN FROM THE SHELL

3) running PHP through apache does NOT work.

my /tmp/freetds.log file told me: 
net.c:168:Connecting to MYDBSERVER port MYDBPORT
net.c:237:tds_open_socket: MYDBSERVER:MYDBPORT: Permission denied

and the answer was my firewall/SELinux was denying the Apache processes access to connect to the remote MSSQL DB port, but my shell accounts were fine.
于 2012-07-10T10:56:58.000 に答える