laravel 5 ->getRealPath() 显示正确的值

问题描述 投票:0回答:3

在我的本地开发中,我使用下面所示的代码,效果完美,

但是当我将网站上传到我的共享主机时,除了文件上传之外,一切正常。我已经确定问题涉及

->getRealPath()
,当我
dd();
时,我得到了这条路径:
/data/sites/web/christophvhbe/tmp

我的主机上不存在该内容。但我发现临时图像存储在我的主机上的位置,位于此处的

tmp/
中:http://gyazo.com/e0199718324119109a4ff66321414e12

如何将

->getRealPath()
值更改为正确的值?

$fileName = time() . '-' . $request->file('foto')->getClientOriginalName();
$product->foto = $fileName;
$product->save();

$imagePath = '/images/producten/'. $fileName;

$image = Image::make($request->file('foto')->getRealPath())->fit(300)->save($imagePath);

我正在使用

Image/intervention
包来上传和存储图像。

php laravel laravel-5 intervention
3个回答
4
投票

您帐户的根目录很可能是

/data/sites/web/christophvhbe
,并且
getRealPath
是完全准确的(您在 FTP 中看到的很可能是 chrooted)。结果,你的
$imagePath
实际上是问题所在。

$imagePath = '/data/sites/web/christophvhbe/images/producten/'. $fileName;

或者,更好的是,使用 Laravel 的

base_path
和/或
public_path
帮助程序,这样,如果您更改托管,即使路径发生变化,它仍然可以工作:

$imagePath = public_path() . '/images/producten/' . $fileName;

如果您查阅错误日志,我敢打赌您会在尝试在服务器的

/images
目录中创建文件时发现权限错误,在共享主机上您肯定无法创建或访问该文件。


0
投票

只需使用这个

$_SERVER['DOCUMENT_ROOT']."/path/to/directory"

0
投票

我也遇到这个问题了。当上传的文件太大(对于您的共享主机而言)时,可能会发生此错误。 您可以尝试使用例如上传较小的文件只有 1kb 并检查错误是否仍然存在。如果这是错误的原因,将

upload_max_filesize
更改为更大的尺寸即可解决问题。您应该咨询您的主机如何更改此值。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.