所以我将PDO类扩展用于数据库连接whit mysql并希望加载外部DSN file(uri:file://../msql.dns)
但是我收到了这个错误:
警告:PDO :: __ construct():不支持远程主机文件访问
然后,假设,因为没有什么可以加载:
*警告:PDO :: __ construct(file://../msql.dns):无法打开流:找不到合适的包装器 第12行/home/me/apps/app/testApp/class/Database2.php
并且catched异常告诉:无效的数据源URI
dsnfile包含:'mysql:host=localhost;dbname=somebase', 'myuser', 'mypass'
即使我只使用'mysql:host=localhost;dbname=somebase'
部分PDO::__construct
或者直接从对象创建实例,也可以使用此部分{{1}}。
答案 0 :(得分:0)
如果您启用了allow url fopen选项,请检查您的php.ini配置,如此链接所述:
http://us3.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
答案 1 :(得分:0)
解决方案是使用绝对路径而不是相对路径。
PDO使用php-streams加载这个文件,我发现问题是我希望php-streams看看include_path,当你使用fopen(),file_get_contents()时就这样做等等。
对于其他人,您必须指定完整路径。
$conn = new PDO('uri:file://' . $_SERVER['DOCUMENT_ROOT'] . '../msql.dns');