Laravel / Composer没有将所有类编译为compiled.php

时间:2014-04-28 01:15:32

标签: php laravel laravel-4 composer-php

在本地开发并且一切正常后,我开始将包含许多类和模型的所有新代码推送到服务器。我继续得到一个错误

production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with
message 'Class 'photo' not found' in 
/var/www/vhosts/domain.com/httpdocs/bootstrap/compiled.php:6114` error.

我试过了:

composer install
composer update
composer dumpautoload -o
php artisan optimize --force
php -dmemory_limit=1G artisan optimize -f

当我运行php artisan optimize --force时,

我收到以下错误:

PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted 
(tried to allocate 72 bytes) in 
/var/www/vhosts/domain.com/httpdocs/vendor/nikic/php-parser/lib/PHPParser/NodeAbstract.php 
on line 34 

在作曲家返回Compiling common classes之后导致我进入-dmemory_limit ...命令

我已经卸载了作曲家,删除了供应商目录,删除了编辑器缓存,删除了编译的.php文件以及其他一些东西,仍然无法解决初始的Class Photo错误。使用类似的LAMP设置,一切都在本地工作正常。我不知所措。还有什么我可以尝试的吗?

2 个答案:

答案 0 :(得分:1)

我发现了问题。在我雄辩的关系中,我将模型名称改为小写。我不确定为什么这会在一台服务器而不是另一台服务器上出现问题。这只影响了2个新的模型/类,所以只是我的疏忽。

所以我以前拥有的是:

public function photos()
{
    return $this->hasMany('photo')->orderBy('sort', 'ASC');
}

我改为:

public function photos()
{
    return $this->hasMany('Photo')->orderBy('sort', 'ASC');
}

答案 1 :(得分:0)

你自己解决了这个问题很好。但是 我想了解为什么它在一台服务器上而不是在其他服务器上运行。

Windows服务器不区分大小写 .Means照片和照片相同..

但是当你选择linux服务器的情况就不一样了。 Linux服务器区分大小写。所以照片与Photo不同..

public function photos()
{
    return $this->hasMany('photo')->orderBy('sort', 'ASC');
}

并将其更改为:

public function photos()
{
    return $this->hasMany('Photo')->orderBy('sort', 'ASC');
}