我一步一步地遵循开始学习教义教程,我几乎完成了它.但令人惊讶的是,接近尾声时,我遇到了一个奇怪的问题。
我无法让show_bug.php脚本工作,尽管几乎相同的show_product.php脚本工作起来很有魅力。当我尝试使用该show_bug.php脚本时,不会给出错误消息(即使使用ini_set(‘display_errors’, ‘On’);error_reporting(E_ALL);),也不会抛出任何异常,但是“什么都不会发生”,也不会采取预期的操作。
在调试器的帮助下,我能够更准确地定位问题:编译器突然退出到vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php的第211行。
这一行的内容是
require $fileName;$fileName的值是/var/folders/n2/_p480vgx4dx4rkk0prvbsbsr0000gn/T/__CG__User.php,这是我的系统中一个不存在的文件.
下面是回溯跟踪堆栈:
Doctrine\Common\Proxy\AbstractProxyFactory->getProxyDefinition()
in vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
Doctrine\Common\Proxy\AbstractProxyFactory->getProxy()
in vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
Doctrine\ORM\UnitOfWork->createEntity()
in vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php
Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator->hydrateRowData()
in vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php
Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator->hydrateAllData()
in vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php
Doctrine\ORM\Internal\Hydration\AbstractHydrator->hydrateAll()
in vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php
Doctrine\ORM\Persisters\BasicEntityPersister->load()
in vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php
{main}()
in show_bug.php任何帮助都很感激。
更新:正如马丁的答案所建议的,我在我的项目目录中创建了一个Proxies子目录,并将bootstrap.php文件的内容修改如下:
<?php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once "vendor/autoload.php";
$paths = array("src/");
$isDevMode = false;
// the connection configuration
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'root',
'password' => 'root',
'dbname' => 'flea_database',
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$proxyDir='/Users/ewandelanoy/Documents/Math_Software/Symfony_stuff/flee_tracker/Proxies';
$config -> setProxyDir($proxyDir);
$entityManager = EntityManager::create($dbParams, $config);应用程序的行为没有改变: show_product.php工作,但show_bug.php什么也不做。
发布于 2016-03-10 10:14:20
尝试使用命令行生成代理文件。
php vendor/bin/doctrine.php orm:generate-proxies这对我有帮助。
发布于 2016-02-16 09:22:53
在我看来,它似乎无法创建代理类(可能您的脚本没有写到/var/folders的权限)。看看配置
在设置方法中,提出了几个假设:
尝试将$proxyDir设置为项目中的某个临时目录,并设置对其的写入权限。
https://stackoverflow.com/questions/35424755
复制相似问题