file_put_contents 不起作用

nam*_*ess 2 php ubuntu file-put-contents

我尝试使用以下代码通过 file_put_contents(转换为 .jpg 的 base64 字符串)将某些内容上传到我的 ubuntu 服务器:

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

是的,所有参数都正确,我仔细检查了它们。我想知道为什么它不起作用:

顺便说一下:我尝试将它上传到一个文件夹,比文件夹高一级,可以通过 url 访问(但即使将它直接放在 Internet 文件夹中,它也不起作用)。

我想到了错误的权限,但即使将权限更改为 777(我知道这是非常不安全的),它也不起作用。

我也没有在控制台中收到任何错误。

有人知道为什么这不起作用吗?

谢谢。

mlo*_*iro 5

文件夹权限

关于您尝试保存 ( /var/www/html) 的文件夹的权限,您可以更改文件夹的组并更改权限,以便该组可以写为:

$ sudo chgrp www-data /var/www/html/
$ sudo chmod 775 /var/www/html
Run Code Online (Sandbox Code Playgroud)

正则表达式

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

AFAIK模式必须有开始和结束的斜杠,我认为你的困惑/#,所以它看起来像

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

在某些版本中,图像后的斜杠仍然会给您带来一些问题,因此请使用反斜杠将其转义

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

我认为这会做:)