1

別のサーバーから読み書きする必要がある非常に単純な SQLite データベースがあります。

データベースがここに保存されているとしましょう: http://www.abc.com/data/data.sqliteそして、PHP を使用してhttp://www.xyz.com からアクセスしています。

だから私の最初の試みは次のとおりでした:

$dbpath = "http://www.abc.com/data/data.sqlite";
$dbconn = "sqlite:$dbpath";
$db = new PDO($dbconn)

ダメです、私は次のようになります:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file'.........PDO->__construct('sqlite:http://w...') #1 {main} thrown

アクセス元と同じサーバーにデータベースをコピーしようとすると、次のようになります。

$dbpath = "http://www.xyz.com/data/data.sqlite";
$dbconn = "sqlite:$dbpath";
$db = new PDO($dbconn)

同じメッセージが表示されます。同じサーバー上の相対パスを指定した場合のみです。

$dbpath = "../data/data.sqlite";

それが実際に機能すること。データベースの URL とデータベース自体が正しいことはわかっています。クロスサーバーへのアクセスに制限はありますか? この問題を解決する方法を知っている人はいますか?

どうもありがとう。

4

1 に答える 1

2

「SQLite サーバー」のようなものはありません。ファイルの形でのみ存在します。
ただし、HTTP プロトコルにはファイルはなく、URI のみです。
したがって、これは本質的な非互換性です。

リモート通話を行うには、3 つの選択肢があります

  1. 冗談として: 各 SELECT クエリの前にファイルをローカルにダウンロードし、更新後にアップロードして戻します
  2. プロキシ スクリプトを確立して、クエリを受信し、json を返します。
  3. 本物のデータベース サーバーを手に入れましょう。
  4. または、プロジェクト アーキテクチャを変更して、リモート アクセスの必要性を排除します。
于 2013-01-23T11:33:10.633 に答える