2014-09-22 9 views
1

Так что я расширение класса PDO использовать для соединения с базой данных MySQL йоту и хотите загрузить внешний DSN file(uri:file://../msql.dns) но я получил эту ошибку:PDO доступ к файлам удаленного хоста не поддерживается

Warning: PDO::__construct(): remote host file access not supported

И затем, как предполагается, потому что ничего не загружать:

*Warning: PDO::__construct(file://../msql.dns): failed to open stream: no suitable wrapper could be found in /home/me/apps/app/testApp/class/Database2.php on line 12

и перехваченное исключение говорит: недопустимого источник данных URI

dsnfile содержит: 'mysql:host=localhost;dbname=somebase', 'myuser', 'mypass'

, даже если я уезжаю только с этой частью 'mysql:host=localhost;dbname=somebase' либо с PDO::__construct, либо непосредственно с экземпляра объекта.

ответ

0

Решение использовать абсолютный путь вместо относительной.

PDO использует php-потоки для загрузки этого файла, и я обнаружил, что проблема в том, что я ожидаю, что php-потоки рассмотрят include_path и просто сделают это, когда вы используете fopen(), file_get_contents(), и т. д.

Другим вы должны указать полный путь.

$conn = new PDO('uri:file://' . $_SERVER['DOCUMENT_ROOT'] . '../msql.dns');