【问题标题】:file_put_contents not workingfile_put_contents 不工作
【发布时间】:2016-01-05 05:22:39
【问题描述】:

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

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

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

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

我想过权限不好,但即使将权限更改为 777(我知道这很不安全),它也不起作用。

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

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

谢谢。

【问题讨论】:

  • 什么是$filename
  • $filename = "../userImgs/img1"
  • error_reporting(E_ALL); ini_set('display_errors', '1');
  • @AbraCadaver 你的意思是,把那个代码放在我的file_put_contents(); 下?如果是,那么这也不会显示任何错误。如果没有,我应该把它放在哪里?
  • /var/www/html/test.php 这是正确的路径吗?并且您仔细检查了www-data(apache 用户)是否可以在那里写信?

标签: php ubuntu file-put-contents


【解决方案1】:

文件夹权限

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

我认为这样可以:)

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多