Laravel 5 - 加载关系触发服务器错误500

时间:2015-12-15 15:17:05

标签: php apache laravel laravel-5 relationships

我刚刚在GoDaddy上购买了一个托管VPS(使用CentOS6 + cPanel,Apache 2.4.10,PHP 5.5),并从GoDaddy共享托管中移动了我的Laravel5应用程序。

该应用程序似乎正在运行,但我在一个特定点上获得了内部服务器错误500,我急切地加载了一些关系。仅供参考,它绝对不是.htaccess问题,因为在byGuid()方法中传递一个空数组可以消除错误。此外,这些关系,当直接调用$ obj-> relationshipName,而不是急切加载时,似乎工作正常。

请求URI: http://somedomain.com/object/view/76a7443f-9e49-4634-9881-b9a936eb4e4c

控制器:

public function getObject(ViewObjectRequest $request) {
           $object = $this->objectsRepo->byGuid($request->guid, [
            'latestAmbientTemp',
            'latestHumidity',
            'latestWeight'
        ]);

        //some other code here, irrelevant....
   }

存储库:

public function byGuid($obj_guid, array $relationships = []){
        if(!is_null($obj= Obj::where('guid', $obj_guid)
            ->with($relationships)
            ->first())) return $obj;
    }

对象中的关系:

public function latestAmbientTemp() {
        return $this->hasOne('BST\Models\TemperatureAmbient')->latest();
    }

public function latestHumidity() {
        return $this->hasOne('BST\Models\Humidity')->latest();
    }

public function latestWeight() {
        return $this->hasOne('BST\Models\Weight')->latest();
    }

Laravel登录storage/logs/somelog.log为空。 Apache日志不提供有关错误的任何详细信息:

[15/Dec/2015:07:45:14 -0700] "GET /obj/view/76a7443f-9e49-4634-9881-b9a936eb4e4c HTTP/1.1" 500 - "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"

有什么想法吗?我真的坚持这个并且去除急切负载是不可取的,所以任何帮助都将非常感谢!感谢。

更新 即使我将byGuid()方法更改为:

,它也会出现错误500
public function byGuid($obj_guid, array $relationships = []){
            $obj= Obj::where('guid', $obj_guid)
                ->first();
            if(!is_null(obj)) return $obj->load($relationships);
        }

意味着问题绝对存在于渴望加载的关系中。有没有人遇到过这样的问题?

1 个答案:

答案 0 :(得分:0)

这个代码可能有一个问题:

public function byGuid($obj_guid, array $relationships = []){
    if(!is_null($hive = Obj::where('guid', $obj_guid)
        ->with($relationships)
        ->first())) return $obj;
}

我注意到您正在返回$obj,但此方法中未定义$obj

传递空数组时没有看到错误的原因是$hive将是null,因此永远不会执行return $obj;语句。