Так что я расширяю класс PDO, чтобы использовать его для подключения к базе данных с MySQL и хочу загрузить внешний DSN file(uri:file://../msql.dns)
но я получил эту ошибку:
Предупреждение: PDO :: __ construct (): доступ к файлу удаленного хоста не поддерживается
А потом, предположительно, потому что загружать нечего
* Предупреждение: PDO :: __ construct (file: //../msql.dns): не удалось открыть поток: не удалось найти подходящую оболочку в
/home/me/apps/app/testApp/class/Database2.php в строке 12
и пойманное исключение говорит: неверный URI источника данных
dsnfile содержит: 'mysql:host=localhost;dbname=somebase', 'myuser', 'mypass'
даже если я уйду только с этой частью 'mysql:host=localhost;dbname=somebase'
либо с PDO::__construct
или создание экземпляра из объекта напрямую.
Проверьте конфигурацию php.ini, если у вас включена опция allow url fopen, как описано по этой ссылке:
http://us3.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
Решение состоит в том, чтобы использовать абсолютный путь вместо относительного.
PDO использует php-потоки для загрузки этого файла, и я обнаружил, что проблема заключается в том, что я ожидаю, что php-потоки посмотрят на include_path и просто сделают это, когда вы используете fopen (), file_get_contents () и т. Д.
Для других вы должны указать полный путь.
$conn = new PDO('uri:file://' . $_SERVER['DOCUMENT_ROOT'] . '../msql.dns');