Laravel 5在使用pathinfo()和不可写目录

时间:2015-10-26 21:48:38

标签: php apache laravel laravel-5

我设法让我的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上,这些是加载的模块

enter image description here

1 个答案:

答案 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, '?'));
}