laravel 'class not found' 生产错误
Posted
技术标签:
【中文标题】laravel \'class not found\' 生产错误【英文标题】:laravel 'class not found' error on productionlaravel 'class not found' 生产错误 【发布时间】:2015-02-12 00:52:25 【问题描述】:这里有点奇怪。
我有人物和动作。 Person 可以有多个 Action,而每个 Action 只属于一个 Person。我正在使用 Chumper 的数据表来显示人员列表,包括他们的操作计数。
自从迁移到生产(伪造)服务器后,我得到了
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_ERROR)
Class 'action' not found
调用数据表时。显示的错误
/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:721
public function hasOne($related, $foreignKey = null, $localKey = null)
$foreignKey = $foreignKey ?: $this->getForeignKey();
$instance = new $related;
$localKey = $localKey ?: $this->getKeyName();
表明我的 hasMany 关系有问题:
# /models/Person.php
class Person extends Eloquent
public function actions()
return $this->hasMany('Action');
# /models/Action.php
class Action extends Eloquent
public function person()
return $this->belongsTo('Person', 'person_id');
不过,我认为这些都很好,因为它们都可以在本地运行。数据表在其他地方也可以正常工作,调用其他项目及其相关操作没有任何问题。
我在生产服务器上尝试了 composer dump-autoload 和 artisan dump-autoload ,但无济于事。 forge 上的部署脚本如下:
git pull origin master
composer install
php artisan migrate --env=production
我无法判断这是配置问题、数据库问题、代码问题还是其他问题。我已经回答了许多类似的问题,但没有任何问题。非常感谢任何帮助。
【问题讨论】:
你是在 windows 上开发吗? 不,OSX。如果有帮助,我的模型文件都以大写字母开头。 嗯...你的代码中有action
吗? (进行区分大小写的搜索)
我在我的ActionsController.php
和一些视图文件中使用$action
作为变量,如果这就是你的意思吗? Route::model('action', 'Actions');
也出现在我的路由文件中。
那些看起来不会产生错误...
【参考方案1】:
谁可能有同样的问题,三重检查你的模型的外壳!我错了,这就是为什么本地在 mac 上工作但在服务器上不工作的原因
【讨论】:
【参考方案2】:所以我想我自己搞砸了这个。
我一直很懒惰,使用旧的“计数”方法将 function datatablePersons()
留在 PersonsController.php
中,依赖于长期失效的关系(导致 n+1,因此必须分箱),因此它在一个actions
类,无论何时调用该关系。
其他控制器中的数据表函数(使用更简洁的“计数”方法)工作正常,因此我刚刚重写了 datatablePersons()
以使用相同的方法。
我还没有完全正确地查询(至少是雄辩的) - 在这里看到这个问题:mysql join ON and AND to laravel eloquent - 但class not found
错误肯定已经消失了。
我(大量)猜测本地机器上的类映射没有被刷新,因为删除了任何被删除的东西,而生产机器每次推送都会重建,因此存在差异......?
无论如何,这不再是问题。
【讨论】:
以上是关于laravel 'class not found' 生产错误的主要内容,如果未能解决你的问题,请参考以下文章
laravel - ReflectionException in Container.php, Class not found?
Laravel Lumen + Broadcasting + Redis + Class pusher not found
在 laravel 8 中出现一个名为“Class 'Database\Seeders\App\Models\Product' not found'' 的错误
关于laravel 5.3 使用redis缓存出现 找不到Class 'PredisClient' not found的问题
API POST 请求在邮递员和 Laravel 上返回 404 NOT FOUND PAGE
解决 Laravel InvalidArgumentException: Authentication views not found