我有这个文件夹结构
[-] myapp/
[+] app/
[-] lib/
[-] vendor/
[-] doctrine/
[-] Doctrine/
Common/
DBAL/
Symfony/
[+] bin/
[-] sites/
[-] default/
[-] test/
test-doctrine-dbal.php我在文档中尝试了这些代码。
<?php
use Doctrine\Common\ClassLoader;
require dirname(__FILE__).'/../../../lib/vendor/doctrine/Doctrine/Common/ClassLoader.php';
$classLoader = new ClassLoader('Doctrine', dirname(__FILE__).'/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php');
$classLoader->register();
$config = new \Doctrine\DBAL\Configuration();
$connectionParams = array(
'dbname' => 'cdcol',
'user' => 'root',
'password' => '',
'host' => 'localhost',
'driver' => 'pdo_mysql',
);
$conn = DriverManager::getConnection($connectionParams, $config);
$sql = "SELECT * FROM cds";
$stmt = $conn->query($sql);
while ($row = $stmt->fetch()) {
echo $row['titel'];
}
?>我得到了警告:
Warning: require(D:\xampp\htdocs\myphp\sites\default\test/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php\Doctrine\DBAL\Configuration.php) [function.require]: failed to open stream: No such file or directory in D:\xampp\htdocs\myphp\lib\vendor\doctrine\Doctrine\Common\ClassLoader.php on line 148和一个错误:
Fatal error: require() [function.require]: Failed opening required 'D:\xampp\htdocs\myphp\sites\default\test/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php\Doctrine\DBAL\Configuration.php' (include_path='.;D:\xampp\php\PEAR') in D:\xampp\htdocs\myphp\lib\vendor\doctrine\Doctrine\Common\ClassLoader.php on line 148我对PHP名称空间了解不多。阅读PHP手册中的PHP命名空间仍然不能解决这个问题。如果我想在该目录结构中使用Doctrine DBAL,该代码是否正确?
发布于 2011-07-18 15:29:13
您需要将Doctrine库路径添加到include_path。请参阅get_include_path和set_include_path PHP函数。
发布于 2011-07-18 23:05:01
在我看来这是错误的(来自警告)
D:\xampp\htdocs\myphp\sites\default\test/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php\Doctrine\DBAL\Configuration.php我不太了解php,但我不认为文件路径可以解析。现在,试着删除dirname(___FILE___)并在其中硬编码路径。
发布于 2013-11-15 20:31:08
ClassLoader构造函数的第二个参数无效:
新原则=新原则(‘
’,dirname(_FILE_).'/../../../lib/vendor/doctrine/Doctrine/DBAL/DriverManager.php');)
第二个参数应该是Doctrine目录的include path,并且不应该是一个文件。
因此,正确的一行是:
新原则=新原则(‘
’,'/../../../lib/vendor/doctrine/');
)
https://stackoverflow.com/questions/6729592
复制相似问题