Я пытаюсь загрузить что-то на свой сервер ubuntu файлом_put_contents (преобразованная base64-строка как.jpg) со следующим кодом:
file_put_contents($filename, base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)));
И да, все параметры правы, я их дважды проверил. И мне интересно, почему он не работает:
Кстати: я пытаюсь загрузить его в папку, на один уровень выше, чем в папке, доступной по URL-адресу (но даже при установке непосредственно в интернет-папку это тоже не работает).
Я думал о плохих разрешениях, но даже при изменении разрешений на 777 (что я знаю очень небезопасно) это не работает.
У меня также нет ошибок в консоли.
У кого-нибудь есть идея, почему это не работает?
Благодарю.
О разрешениях для папки, в которой вы пытаетесь сохранить (/var/www/html
), вы можете изменить группу папки и изменить разрешения, чтобы группа могла писать как:
$ sudo chgrp www-data /var/www/html/
$ sudo chmod 775 /var/www/html
preg_replace('#^data:image/\w+;base64,#i', '', $data)
AFAIK шаблон должен иметь начальную и конечную косые черты, я думаю, вы путаете /
с #
, так что это будет выглядеть
/^data:image/\w+;base64,/i
Однако этот снимок после изображения даст вам некоторые проблемы в некоторых версиях, поэтому избегайте его с помощью обратной косой черты
/^data:image\/\w+;base64,/i
Я думаю, что это будет делать :)
$filename
?$filename = "../userImgs/img1"