У меня очень простая база данных 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-адреса базы данных и сама база данных верны. Так есть ли ограничение доступа к кросс-серверам? Кто-нибудь знает, как решить эту проблему?
Большое спасибо.
Нет такой вещи, как «сервер SQLite». Он существует только в виде файла.
Но в HTTP-протоколе нет файлов, но только URI.
Таким образом, это существенная несовместимость.
Чтобы иметь возможность делать удаленные вызовы, у вас есть 3 варианта