【问题标题】:Issue with file edit in PHP using file_put_contents (Laravel)使用 file_put_contents (Laravel) 在 PHP 中编辑文件的问题
【发布时间】:2021-01-20 13:38:53
【问题描述】:

大家下午好,我遇到了一个我无法解决的奇怪问题,我希望有人可以帮助我找出导致此问题的原因。 为了提供一些上下文,我允许用户在产品上存储一组图像,然后使用 laravel-stapler 包存储它们,该包的配置方式如下:

 public function __construct(array $attributes = [])
{
    parent::__construct($attributes);

    $this->hasAttachedFile('image', [
        'styles' => [
            'thumbnail' => '500x500#',
            'large' => '800x800#'
        ],
        'url' => '/media/image/:id/:style/:filename',
        'default_url' => '/img/category-placeholder-greyscale.jpg',
        'convert_options' => [
            'jpeg_quality' => 60
        ]
    ]);
}

图像保存在三个文件夹中:
../path-to-image/original/file-name
../图像路径/缩略图/文件名
../图像路径/大/文件名

保存这些图像后,我使用croppie.js 旋转和编辑它们。在用户编辑和裁剪它们并提交后,图像作为 base64 发送到控制器,控制器在下面被缩短为仅相关部分:

$imageData = $request->get('imagebase64');

list(, $imageData) = explode(';', $imageData);
list(, $imageData) = explode(',', $imageData);
$imageData = base64_decode($imageData);
// $image is loaded up through dependency injection
$path = public_path('/path' . '/large/' . $image->image_file_name);
$path2 = public_path('/path' . '/original/' . $image->image_file_name);


file_put_contents($path, $imageData);
file_put_contents($path2, $imageData);

这在我的本地机器上工作得很好,图像保存在两个文件夹中,我得到一个新的裁剪和编辑的图像,但在我的服务器上这不起作用,第一个 file_put_contents 不起作用并且不会将新图像存储到 /large 文件夹中,但第二个 file_put_contents 可以工作并将新图像存储到 /original 文件夹中。

我不确定为什么会发生这种情况,如果您能给我任何帮助,我将不胜感激。我也不认为这是由于权限,因为我给了图像文件夹正确的权限,但我不能确定。该代码也不会崩溃,它只是在不保存第一张图像的情况下执行

【问题讨论】:

  • 您是否检查了失败目录的权限
  • 任何错误信息?做一些愚蠢的测试 - 设置另一个路径,替换 file_put's,设置更多 file_put's 并测试哪个失败,...
  • @RiggsFolly 是的,我做到了,permissions 看起来不错。我不擅长 linux,但这可能与守护进程有关吗?
  • @blackblue 根本没有,它只是默默地失败了,我尝试删除存储到 /original 文件夹中的 file_put,另一个仍然失败,我也尝试使用 chmod($path, 777) 只是看看会发生什么,它确实有效,但之后立即崩溃,所以它似乎与权限有关,但无法弄清楚究竟是什么
  • 不一定 - 我不记得细节 - 有一些问题首先失败,接下来没有问题 - 是关于......时间 - 假设变量没有准备好:)错误在上面的其他地方并且整个代码被解析为有效

标签: php laravel image file croppie


【解决方案1】:

您可能必须编辑 .htaccess 文件以授予对这些文件的权限

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    相关资源
    最近更新 更多