我正在逐步遵循教义入门教程,我几乎完成了它。但令人惊讶的是,在接近尾声时,我遇到一个奇怪的问题。
我无法让show_bug.php
脚本工作,即使几乎相同 show_product.php
脚本就像一个魅力。当我尝试使用该show_bug.php
脚本时,没有给出错误消息(即使使用 ini_set(‘display_errors’, ‘On’);error_reporting(E_ALL);
(,并且不会引发异常,但是"什么都没有"发生,也没有采取预期的行动。
在我的调试器的帮助下,我能够更精确地定位问题:编译器在 的第 211 行突然退出 vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
这一行的内容是
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
任何帮助表示赞赏。
更新:正如Martin的回答中所建议的,我在项目目录中创建了一个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什么都不做
尝试使用命令行生成代理文件。
php vendor/bin/doctrine.php orm:generate-proxies
这对我有帮助。
在我看来,
它无法创建代理类(也许您的脚本无权写入/var/folders
(。看看配置:
在设置方法中,做了几个假设:
。
如果未设置第三个参数$proxyDir,请使用系统临时目录。
尝试将$proxyDir
设置为项目中的某个临时目录,并为其设置写入权限。