在我的本地开发中,我使用下面显示的代码,效果很好,

但是当我将网站上传到共享主机时,除了文件上传之外,其他所有功能都正常运行。我已经确定问题出在->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包上传和存储图像。

最佳答案

您的帐户的根源很可能是/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目录中创建文件时发现权限错误,在共享主机上,您肯定无法创建或访问该文件。

关于php - laravel 5-> getRealPath()没有显示正确的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30970532/

10-11 01:12