file_put_contents не работает

1

Я пытаюсь загрузить что-то на свой сервер ubuntu файлом_put_contents (преобразованная base64-строка как.jpg) со следующим кодом:

file_put_contents($filename, base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)));

И да, все параметры правы, я их дважды проверил. И мне интересно, почему он не работает:

Кстати: я пытаюсь загрузить его в папку, на один уровень выше, чем в папке, доступной по URL-адресу (но даже при установке непосредственно в интернет-папку это тоже не работает).

Я думал о плохих разрешениях, но даже при изменении разрешений на 777 (что я знаю очень небезопасно) это не работает.

У меня также нет ошибок в консоли.

У кого-нибудь есть идея, почему это не работает?

Благодарю.

  • 0
    Что такое $filename ?
  • 0
    $filename = "../userImgs/img1"
Показать ещё 11 комментариев
Теги:
file-put-contents

1 ответ

3
Лучший ответ

Разрешения для папок

О разрешениях для папки, в которой вы пытаетесь сохранить (/var/www/html), вы можете изменить группу папки и изменить разрешения, чтобы группа могла писать как:

$ sudo chgrp www-data /var/www/html/
$ sudo chmod 775 /var/www/html

Regex

preg_replace('#^data:image/\w+;base64,#i', '', $data)

AFAIK шаблон должен иметь начальную и конечную косые черты, я думаю, вы путаете / с #, так что это будет выглядеть

/^data:image/\w+;base64,/i

Однако этот снимок после изображения даст вам некоторые проблемы в некоторых версиях, поэтому избегайте его с помощью обратной косой черты

/^data:image\/\w+;base64,/i

Я думаю, что это будет делать :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню