我设法让我的laravel应用程序在共享主机上工作。
在tutorial之后,我将应用文件移至/reddit/
之外的/public_html/
目录,将/public/
内的文件移至/public_html/
一切正常,直到我尝试提交帖子,然后我收到此错误
无法将图像数据写入路径(/ images / Q4vQitDu。)
这是它所指的代码块
$orig = pathinfo($info->image, PATHINFO_EXTENSION);
$extension = substr($orig, 0, strpos($orig, '?'));
$newName = '/images/' . str_random(8) . ".{$extension}";
if (File::exists($newName)) {
$imageToken = substr(sha1(mt_rand()), 0, 5);
$newName = '/images/' . str_random(8) . '-' . $imageToken . ".{$extension}";
}
$image = Image::make($info->image)->fit(70, 70)->save($newName);
$embed_data = ['text' => $info->description, 'image' => basename($newName)];
正如您所看到的,它是使用点生成图像名称而不是{$extension}
- 我不知道为什么它在本地工作。
它还说/images/
是不可写的,但确实如此。它存在于/public_html/images/
中,权限设置为777
更新
我修改了权限问题,方法是将/images/
网址更改为完整服务器网址/home/maghnatis/public_html/images/
但是图像仍然在没有扩展的情况下保存。
这是index.php
/public_html/
require __DIR__.'/../reddit/bootstrap/autoload.php';
$app = require_once __DIR__.'/../reddit/bootstrap/app.php';
正在/reddit/
/public_html/
目录中加载文件
我在PHP 5.5上,这些是加载的模块
答案 0 :(得分:0)
固定。
而不是/images/
我使用了完整的服务器路径/home/maghnatis/public_html/images/
我在将其发送到数据库之前检查了扩展名
$orig = pathinfo($info->image, PATHINFO_EXTENSION);
$qmark = str_contains($orig, '?');
if($qmark == false) {
$extension = $orig;
} else {
$extension = substr($orig, 0, strpos($orig, '?'));
}