0

リモートSQLServerに接続するPHPスクリプトがあります。ルートとしてのコマンドラインから、freetdsコマンドを呼び出すことができます:tsql –H hostname –U usernameこれは非常にうまく接続され、クエリを実行できます。

/var/www/html/axis/public/test.phpにPHPスクリプトがあります。次の場合:sudo –u apache –s(ユーザーをrootからapacheに変更)、コマンドラインからPHPスクリプトを実行します。接続してクエリを実行します。ただし、Webブラウザから同じスクリプトを実行すると、失敗します。ブラウザはDB接続エラーを返します。Webブラウザーは、想定されているすべての場所に接続でき、SQL接続を必要としないすべてのWebページをレンダリングします。

apacheは、httpdを実行しているユーザーです。私はこれを次の方法で確認しました:ps aux | grep apache

apacheがコマンドラインからPHPスクリプトを正常に実行できる理由についてのアイデアはありますが、ブラウザーがまったく同じスクリプトに接続しようとすると失敗しますか?

ありがとう、デリック

4

2 に答える 2

0

FreeTDS FAQによると:

http://www.freetds.org/faq.html#php

また、接続コードを投稿できますか?正確にどのようなエラーが発生していますか?

于 2011-09-07T00:46:47.310 に答える
0

したがって、問題はSELinuxにありました。Web サーバーは、ネットワークの外部 (SQL サーバー) への接続が禁止されていました。このコマンドを実行する必要がありました:

/usr/sbin/setsebool -P httpd_can_network_connect_db 1

それが完了すると、すべてがうまくいきました。この回答は、Daniel Fazekas の助けを借りて提供されました。この問題を私と一緒に見てくれてありがとう。

于 2011-09-07T14:30:51.547 に答える