Php Laravel 5-加载关系触发服务器错误500
我刚刚在GoDaddy上购买了一个托管VPS(使用CentOS6+cPanel、Apache2.4.10、PHP5.5),并将我的Laravel5应用程序从一个GoDaddy共享主机移走 该应用程序似乎正在运行,但我在某个特定点收到一个内部服务器错误500,在该点上我急于加载一些关系。仅供参考,这绝对不是.htaccess问题,因为在byGuid()方法中传递空数组消除了错误。此外,当直接以$obj->relationshipName的形式调用这些关系时,它们似乎工作得很好,并且不急于加载 请求URI:Php Laravel 5-加载关系触发服务器错误500,php,apache,laravel,laravel-5,relationships,Php,Apache,Laravel,Laravel 5,Relationships,我刚刚在GoDaddy上购买了一个托管VPS(使用CentOS6+cPanel、Apache2.4.10、PHP5.5),并将我的Laravel5应用程序从一个GoDaddy共享主机移走 该应用程序似乎正在运行,但我在某个特定点收到一个内部服务器错误500,在该点上我急于加载一些关系。仅供参考,这绝对不是.htaccess问题,因为在byGuid()方法中传递空数组消除了错误。此外,当直接以$obj->relationshipName的形式调用这些关系时,它们似乎工作得很好,并且不急于加载 请求
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 log in存储/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()方法更改为:
public function byGuid($obj_guid, array $relationships = []){
$obj= Obj::where('guid', $obj_guid)
->first();
if(!is_null(obj)) return $obj->load($relationships);
}
这意味着问题肯定在关系中。以前有人遇到过这样的问题吗?一个问题可能是以下代码:
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
,因此返回$obj代码>语句从未执行。一个问题可能是此代码:
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
,因此返回$obj代码>语句永远不会执行。也许您遇到了内存限制-VPS有哪些资源?你需要检查你的错误日志,不要访问logIt的1GB服务器。我的共享主机也是1GB,我在那里没有任何问题。一旦我点击URL,错误日志(在cPanel>error log中)不会得到任何新的错误,服务器上关联的错误日志文件也不会。Apache配置有error\u reporting=E\u ALL和display\u errors=OnYou提及CPanel错误日志-这是否显示Apache错误日志中的项目?在我的服务器上,显示了由PHP引起的500个错误。这是一个内存限制问题。我的服务器的值为32MB,对于正在运行的数据密集型脚本来说太低。将php.ini中的值设置为-1(即无限制)修复了该问题。也许您遇到了内存限制-VPS有哪些资源?你需要检查你的错误日志,不要访问logIt的1GB服务器。我的共享主机也是1GB,我在那里没有任何问题。一旦我点击URL,错误日志(在cPanel>error log中)不会得到任何新的错误,服务器上关联的错误日志文件也不会。Apache配置有error\u reporting=E\u ALL和display\u errors=OnYou提及CPanel错误日志-这是否显示Apache错误日志中的项目?在我的服务器上,显示了由PHP引起的500个错误。这是一个内存限制问题。我的服务器的值为32MB,对于正在运行的数据密集型脚本来说太低。将php.ini中的值设置为-1(即无限制)修复了该问题。很抱歉,这是一个输入错误,$hive应该是$obj。问题仍然存在。很抱歉,这是一个输入错误,$hive应该是$obj。问题依然存在。