DoctrineExtensions 查找错误的目录

DoctrineExtensions looking in wrong directory

我在我的 PHP 项目中使用 Doctrine ORM。

在我的一个查询中,我使用了 'COS'(余弦)和 'SIN'(正弦)函数,为了在 Doctrine 上实现这一点,我必须将其添加到我的实体管理器中配置:

$config->addCustomNumericFunction('COS', 'DoctrineExtensions\Query\Mysql\cos');
$config->addCustomNumericFunction('SIN', 'DoctrineExtensions\Query\Mysql\sin');

当我 运行 在我的本地 PC + 服务器上时,这工作正常。

但是一旦我将项目放到在线网络服务器上,我就会遇到这些错误:

Fatal error: Class 'DoctrineExtensions\Query\Mysql\cos' not found in /home/USER/domains/USER.com/public_html/MYDIRECTORY/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php on line 3418

Fatal error: Class 'DoctrineExtensions\Query\Mysql\sin' not found in /home/USER/domains/USER.com/public_html/MYDIRECTORY/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php on line 3418

它在 'vendor\doctrine' 目录而不是 'vendor\beberlei\DoctrineExtensions' 目录中查找。

我的作曲家包含:

"beberlei/DoctrineExtensions": "dev-master"

供应商自动加载器包含:

'DoctrineExtensions\' => array($vendorDir . '/beberlei/DoctrineExtensions/src')

任何人都可以向我解释一下吗...我尝试添加一个类加载器,但仍然是同样的问题。

本地主机工作正常...

在我使用的 entitymanager 配置中添加正弦和余弦函数时:

$config->addCustomNumericFunction('COS', 'DoctrineExtensions\Query\Mysql\cos');
$config->addCustomNumericFunction('SIN', 'DoctrineExtensions\Query\Mysql\sin');

上述解决方案适用于本地 PC + 服务器。

将项目文件移动到网络服务器时,上述配置将不起作用。

你必须把DoctrineExtensions namespace中最后一个单词的首字母改成大写,像这样:

$config->addCustomNumericFunction('COS', 'DoctrineExtensions\Query\Mysql\Cos');
$config->addCustomNumericFunction('SIN', 'DoctrineExtensions\Query\Mysql\Sin');

基本上 cos 变成 Cossin 变成 Sin.

现在它可以在在线网络服务器上运行。终于成功了!