7

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

但是当我将网站上传到我的共享主机时,除了我的文件上传之外,一切都很好。->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包上传和存储图像。

4

2 回答 2

4

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

于 2015-06-22T02:02:05.590 回答
0

只需使用这个

$_SERVER['DOCUMENT_ROOT']."/path/to/directory"
于 2019-06-27T04:31:25.960 回答