我正在使用Laravel PHP,我有一个照片库,允许用户将图像上传到相册。当我上传普通文件大小小于8MB的图像时,它们会上传并保存到相册中。但是,当我尝试上传大于8MB的图像时,我不断收到“调用成员函数getClientOriginalName()on null”错误。
为了考虑上传到相册的大型图片,我分别编辑了'nginx.conf'和'php.ini',以便' nginx.conf '中的上一行
client_max_body_size 8M;
已更改为
client_max_body_size 25M;
在'php.ini'中,这一行:
upload_max_filesize = 8M
更改为:
upload_max_filesize = 25M
在这两个文件中进行了更改之后,我在Putty中运行了:
sudo service nginx restart
sudo service php5-fpm restart
以下是我上传新照片的控制器:
public function store()
{
$input = \Input::all();
$validation = new Validators\Stone_Photo;
$filename = str_random(4) . \Input::file('photo_path')->getClientOriginalName();
$destination = "uploads/photos/";
$upload = \Input::file('photo_path')->move($destination, $filename);
if( $upload == false )
{
return \Redirect::to('home.index')
->withInput()
->withErrors($validation->errors)
->with('message', 'Could not upload picture');
}
$this->stone_photo->create($input, $filename);
return \Redirect::route('show_stone', array('id' => $input['stone_id']));
}
再一次,8MB以下的照片仍然可以正常上传,但是当我尝试上传9MB或更高的照片时,我不断收到错误“调用成员函数getClientOriginalName()on null”错误,我不知道为什么。任何帮助是极大的赞赏。
答案 0 :(得分:2)
由于您的控制器操作为store
,我猜测您有一个restfull控制器,对于该操作,HTTP方法为POST
。如果是这种情况,您需要确保设置post_max_size
中的php.ini
:
post_max_size = 25M
否则,upload_max_filesize
的任何POST
请求都将覆盖post_max_size
{{1}}的值(默认为8MB)。