file_put_contents不起作用

时间:2015-10-07 19:58:42

标签: php ubuntu file-put-contents

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

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

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

顺便说一下:我尝试将其上传到文件夹,比文件夹高一级,可以通过网址访问(但即使将其直接放在互联网文件夹中,它也无法正常工作)。

我考虑过糟糕的权限,但即使将权限更改为777(我知道这是非常不安全的),它也无效。

我也没有在控制台中出现任何错误。

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

感谢。

1 个答案:

答案 0 :(得分:4)

文件夹权限

关于您尝试保存的文件夹(/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

image 之后的斜线仍会在某些版本中给你一些问题,所以用反斜杠转义它

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

我认为这样做:)