php - file_put_contents 不起作用

标签 php ubuntu file-put-contents

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

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

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

顺便说一句:我尝试将其上传到一个比该文件夹高一级的文件夹,该文件夹可以通过网址访问(但即使将其直接放入互联网文件夹中,它也不起作用)。

我考虑过权限不好,但即使将权限更改为 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)

据我所知,模式必须有开始和结束斜杠,我认为你已经将 /# 混淆了,所以它看起来喜欢

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

图像后面的斜杠仍然会在某些版本中给你带来一些问题,所以用反斜杠转义它

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

我想这样就可以了:)

关于php - file_put_contents 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33001363/

相关文章:

php - 如何使用 file_get_contents() 加载远程文件?

php - 中奖机会 PHP 百分比计算

shell - Ubuntu shell - 消除一行的条件

ruby - 如何在 sublime-text-2 中运行 ruby​​ 文件

html - 很棒的字体没有加载到我的 apache 中

php - file_put_contents 不适用于 json laravel 和 php

php - 为 livewire/message/{component} 获取 404

javascript - 需要将 ajax 响应存储到全局变量

php - 在父方法中获取子类名称

php - 读取特定地址的内容网页