• 締切済み

ネットワークドライブ経由でODBC

WindowsXP、Apache2/2.0.55、PHP/5.0.5の環境で、ODBCを介してMicrosoft Access(*.mdb)にアクセスするphpを作ろうと思ってます。 データソースがローカルにあるときは上手くいくのですが、ネットワークドライブに割り当てられた共有にあるとウォーニングが出て、データベースに接続できません。 どうすれば接続できるでしょうか?参考にしたURLはhttp://www.phpfreaks.com/print.php?cmd=tutorial&tut_id=61です。 出たウォーニングは Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Microsoft Access Driver] パス '(不明)' は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。, SQL state S1009 in SQLConnect in C:\Program Files\Apache Group\Apache2\htdocs\odbc\odbc.php on line 2 Could Not Connect to ODBC Database! です。

みんなの回答

  • cocom32
  • ベストアンサー率58% (75/129)
回答No.5

割り当てたネットワークドライブは読み取り専用ではありませんか。 読み取り専用なら、フルアクセスにしてください。

taropoo
質問者

補足

残念ながら読み取り専用ではありません。 あと、#2さんへの補足で > ネットワークドライブにパーミッションはつけてないのですが。 と書いたのは私の勘違いでした。申し訳ございません。

  • cocom32
  • ベストアンサー率58% (75/129)
回答No.4

エクセルからネットワークドライブのアクセスに接続した時に同じエラーがでました。 IEのツール(T)→インターネットオプション→セキュリティタブ イントラネットを選択 サイト(S)→詳細設定(A)→次のWEBサイトをゾーンに追加する(D)に file://xxx.xxx.xxx.xxx サーバーのアドレスを入力 追加(A)ボタンをクリックし WEBサイト(W)に追加する。 後はOKボタンですべて閉じる これで接続できるかやってみてください。

taropoo
質問者

補足

やってみましたが、同じ結果でした。

回答No.3

#2です。 どのようなネットワークドライブか書かれていませんが、 何の認証も行わないドライブなんですか? apacheサービス起動ユーザの話は・・ サービス上のタスクからアクセスすることになるので、 Windows認証が関係するようなケースでは、よく問題に なるところなんですが。 認証なしにドライブがアクセスできるような種類の ネットワークドライブ相手なら関係ないですけどね。 (独自認証するケースも関係ないですね) TestDBの定義で、UNC指定にするだけでOKなのではないですかね。

taropoo
質問者

補足

> どのようなネットワークドライブか書かれていませんが、 > 何の認証も行わないドライブなんですか? ユーザー名とパスワードで認証を行っているドライブです。 > TestDBの定義で、UNC指定にするだけでOKなのではないですかね。 やってみましたが、駄目でした。

回答No.2

>#1どの それだとネットワークドライブへのapacheからのアクセスが解消されません。 まずは、apacheサービスをデフォルトであるローカルシステムアカウントでなく、 ネットワークドライブへのアクセス権を持つユーザで、サービスを実行してください。 次に、phpでのmdb指定を、UNC指定(\\server\share\hoge.mdbとか)で行うよう変更してください。 それで解決すると思います。

taropoo
質問者

補足

ネットワークドライブにパーミッションはつけてないのですが。 phpではmdbを直接指定するのではなくODBC経由で(TestDBとして)指定しています。

  • nov-d
  • ベストアンサー率36% (51/140)
回答No.1

WebサーバからDBサーバへの接続が認証されていないということではないでしょうか? もしそうであれば、DBサーバへのログインID、パスワードをWebサーバ側に登録しておくことで回避できるように思います。 <サーバへのログインID、パスワードの登録方法(WinXP)>  管理ツール→ユーザアカウント→詳細タブ→パスワードの管理 外してますかねぇ。(^_^;

関連するQ&A

  • ODBC接続で困っています。

    ODBC接続で困っています。 いつもお世話になっております。 VB6.0からODBCを利用してACCESSに接続をしたいのですが、 接続文字列が良く分かりません。 色々と調べてみたのですが、 管理ツールからODBCデータソースを作成(Microsoft Access Driver (*.mdb)を使用)して、  DSN=データソース名 という風にするのと、  Driver={Microsoft Access Driver (*.mdb)};Dbq=MDBファイルパス; とするのとは同じなのでしょうか? 前者では無事に接続できたのですが、後者では接続できませんでした。 MDBファイルのパスは動的にしたいので、できれば後者の方が良いのですが、 どうしたら良いでしょうか…。 よろしくお願い致します。

  • PHPからODBCによるOracle10gへの接続

    Windows2003Serverに展開しているPHPベースのページからODBCを経由して、Oracle10gへアクセスしようとすると以下のようなエラーが表示されてしまいます。 -------------------------------------------- Warning: odbc_connect(): SQL error: 指定されたドライバはシステム エラー 5 (Oracle in OraDb10g_home1) のため読み込めませんでした。, SQL state IM003 in SQLConnect in c:\php\pear\DB\odbc.php on line 129 データベースの接続に失敗しました。 -------------------------------------------- コントロールパネルのODBC設定でのテストはうまくいくんですが・・。 同様の環境で同様なトラブルの原因と対処策をご存じの方がいらっしゃったら、ご教授いただけないでしょうか?

  • odbcドライバの違い

    ODBCでAccessと接続をしています。 ODBCの設定の画面のドライバ選択で、 「Microsoft Access Driver (*.mdb)」と 「Driver Do Microsoft Access (*.mdb)」は どう違うのでしょうか? 過去ログを調べていたらちょうど一年前の質問にまったく同じ内容があったのですが、 http://www.okweb.ne.jp/kotaeru.php3?q=241100 一日で締め切られているのでなんとなく納得がいかないのですが・・・ 言語の違い?ですか? YES/NOだけでも解答が得られれば すっきりするのですが・・・ ご存知の方、お願いします。

  • apacheからのodbc接続

    php5 からコマンドラインではodbc経由でsqlserverに接続は出来るのですが、 apache2.0をインストールして、webを通して接続すると、 Fatal error: Call to undefined function: odbc_connect() というエラーが出ます。 これは、PHP,apacheのどこか設定ができていないのでしょうか? ちなみに、webを通して(odbc関数を使わない)phpの動作は確認できています。

    • 締切済み
    • PHP
  • ODBC 一般ネットワークエラー

    OS:Windows2000 SQLServerOS:WindowsNTServer4.0 SQLServer6.5 初めてこちらを利用致します。 よろしくお願い致します。 Access(2000)で作られたデータベースに下記エラーが発生し、まったくつながらなくなっていました。 (エラー内容) 接続できませんでした SQL State:’01000’ SQL Server エラー : 10060 [Microsoft][ODBC SQL Server Drivers][TCP/IP Sockets]一般ConnectionOpen(connect()) 接続できませんでした SQL State:’08001’ SQL Server エラー : 11 [Microsoft][ODBCSQL Server Drivers][TCP/IP Sockets]一般的なネットワークエラーです。 ネットワークのマニュアルを調べてください。 現在SQLServerは2台あるのですが、全てつなぐことができません。 インターネットには接続できています。 ポートも調べましたが、問題はありませんでした。 解決方法があれば、ご教授願います。 よろしくお願い致します。

  • ODBCを使用したSQLの使い方を教えてほしいです

    タイトルの内容を調べているのですが、上手くヒットせず、 同じように記述してもエラーになってしまいます。 よくわかりませんので、教えてほしいです。 odbc_connectは通っているようなので、接続はできている と思います。 $rs=odbc_exec($conn,$sql);にてエラーになるようです。 Warning: odbc_exec():が出ます。 よろしくお願いします。 print ("<html>"); print ("<body>"); $conn=odbc_connect('m_db','',''); if (!$conn) { exit("Connection Failed: " . $conn); } $sql = "SELECT * FROM test_table"; $rs=odbc_exec($conn,$sql); if (!$rs) { exit("Error in SQL"); } echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)) { $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; } odbc_close($conn); echo "</table>"; print ("</body>"); print ("</html>");

    • ベストアンサー
    • PHP
  • JDBC-ODBC-MDB(日本語テーブル・カラム名)アクセスで、ODBC -1305エラー

    日本語のテーブル名・カラム名を使用したAccess(2000) mdb に JSPおよびServletからJDBC(ODBC経由)でアクセスすると、 SQL実行[executeQuery()]時に下記のエラーが発生します。 getMessage(): [Microsoft][ODBC Microsoft Access Driver] getErrorCode(): -1305 getSQLState(): S0002 ただし、 1.Javaアプリケーションから直接JDBC(ODBC経由)でアクセスすると正常に動作します(ResultSet取得)。 2.JSP・サーブレットからのアクセスでも、   2-1.テーブル名・カラム名がascii文字のテーブルの場合   2-2.テーブル名・カラム名が日本語でも、SQLで使わない場合      例:SELECT now()   の場合は、 正常に動作します(ResultSet取得)。 JSP Servletは   contentType="text/html; charset=Windows-31J"   pageEncoding="windows-31j" で、保存形式は 日本語Shift_JISです。 出力画面表示に文字化けはありません。 作業環境はノートPC1台で、  Tomcat: 5.5.27 JDK/JRE : 1.6.0_07  Eclipse: 3.4.2  OS:Vista Ultimate SP1  ODBCデータソース:システムDNS Microsoft Access Driver(*.mdb) 6.00.6001.18000 ODBCJT32.DLL です。 諸兄のお知恵を拝借お願いします。 ※エラーコードの内容は? ※どのあたりを調べればよいか? ========================= Servletの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) ========================= JSPの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at org.apache.jsp.TestODBC_jsp._jspService(TestODBC_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

  • ODBC 一般ネットワークエラー

    OS:WindowsXP SQLServerOS:WindowsNTServer4.0 SQLServer6.5 お世話になります。 今まで自PCからODBC接続でSQLServerのデータを見ていたのですが、 ある日気付いたら下記エラーが発生し、まったくつながらなく なっていました。 (エラー内容) 接続できませんでした SQL State:’08001’ SQL Server エラー : 11 [Microsoft][ODBCSQL Server Drivers][DBMSSOCN]一般ネットワークエラーです。 ネットワークのマニュアルを調べてください。 接続できませんでした SQL State:’01000’ SQL Server エラー : 10061 ConnectionOpen(connect()) 現在SQLServerは3台あるのですが、全てつなぐことができません。 他PCからはつながるので、自PCに問題があると思われるのですが、 原因がわかりません。 何かヒントでもいいので、どなたかご教授願います。 よろしくお願いします。

  • MySQLの接続について教えてください。

    こんにちわ。初心者です。MySQL5 の接続を php5、Apache2、windowsXP を使用して接続したいのですが、 できず困っております。Apacheとphpの相互の設定はできています。セキュリティソフトは念のため止めました。 phpとMySQLの設定がどこかが違うのではないかと思うのですが、 良くわからないのでどなたかアドバイスを宜しくお願いします。 <?php $host=\"aaa\";$name=\"ccc\";$pass=\"ddd\"; $con = mysql_connect($host,$name,$pass); if($con !== false){echo\"ok\";}else{echo\"falsess\";}?> という文をアパッチで表示させると、 Warning: mysql_connect() [function.mysql-connect]: Access denied for user \'ccc\'@\'localhost\' (using password: YES) in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\php\\lesson.php on line 2 falsess

    • 締切済み
    • PHP
  • DAOにてJET経由でのODBC接続とODBCDirect経由でのODBC接続の違いについて

    いつもお世話になっております。 VBにてDAO接続する際にJETとODBCDirectとあると思いますが、この2つの違いはどこで判断するのでしょうか。 以下に自分がODBCDirect接続だと思っているロジックを記述します。 -------------プログラムスタート------- _1 Private Sub Form_Load() _2 _3 Dim Mydb As Database _4 Dim wk_str As String _5 Dim Mydata As Recordset _6 Dim str_sql As String _7 _8 'ODBC接続文字列 _9 wk_str = "ODBC;DSN = DataSoce_Name;" 10 wk_str = wk_str & "UID = User_Name;" 11 wk_str = wk_str & "PWD = PassWord" 12 13 'データベースとの接続 14 Set Mydb = DBEngine.OpenDatabase("DataSoce_Name", False, False, wk_str) 15 'SQL文 16 str_sql = "select name from sample" 17 'SQLの実行 18 Set Mydata = Mydb.OpenRecordset(str_sql, dbOpenDynaset) 19 'SQLの結果 20 MsgBox Mydata.Fields("name").Value 21 'レコードセットのクローズ 22 Mydata.Close 23 'データベースのクローズ 24 Mydb.Close 25 End Sub -------------プログラムエンド------- ●Jet経由の場合 上記プログラム9行目のDSNと14行目のOpenDatabaseの"DataSoce_Name"にmdbのパスを設定している場合。 (OpenDatabaseにmdbのパスのみを設定している場合はローカル接続だと思う。) ●ODBCDirect経由の場合 上記プログラム9行目のDSNと14行目のOpenDatabaseの"DataSoce_Name"にODBCデータソース名を設定している場合。 2つの違いはこのような感じではと思いますが間違いであればご指摘いただけないでしょうか。 また、プログラム自体にも間違いがあればご指摘下さい。