file_put_content() 文件权限错误

Posted

技术标签:

【中文标题】file_put_content() 文件权限错误【英文标题】:file_put_content() file permission error 【发布时间】:2013-12-01 10:45:19 【问题描述】:

在我的代码中,我发送 url 编码图像并使用 file_out_content 将其转换为文件。

    if(file_put_contents($arg['org_file'],$decodeData))
    
        chmod($arg['org_file'],777);
        $arg = Model_Photo::_convert_png_to_jpg($arg);

        //reduce file
        \Fuel\Core\Image::load($arg['org_file'])
                ->config('quality',80)
                ->resize($arg['width'])
                ->save($arg['org_file'],755);

当我的执行得到上面的代码时。带有 Image::Load 的部分出现此错误。

Fuel\Core\phpErrorException [ Warning ]:
getimagesize(/www/my.website.com/public/uploads/2013-11-18/4511582301f8b92b08aad0b8e.jpg): failed to open stream: Permission denied

您可以看到我将创建的文件chmod为777,但查看控制台权限不是777。

--wxrw--wt 1 apache apache 291301 Nov 18 18:07 4511582301f8b92b08aad0b8e.jpg

没有读取使我在进行文件操作时遇到问题。我做了 chmod 但它不起作用,所以我想我错过了一些东西。请帮忙,谢谢!

【问题讨论】:

【参考方案1】:

好吧,只是777 与 *nix 使用的八进制表示不同。您需要添加 0 前缀以表明该数字是八进制的。

chmod($arg['org_file'], 0777);

更新

拨打->save()也是如此:

->save($arg['org_file'], 0755);

举例说明:

777  = 1100001001 (01411)
0777 =  111111111

【讨论】:

对不起,它工作正常,然后我意识到这是我的本地项目副本。无论如何,它不工作。指示的错误没有变化。 ->save($arg['org_file'],755) 是罪魁祸首。将其更改为 0777 并且它正在工作。我只会改变一些东西。谢谢。 @MrA 我没有意识到->save() 的最后一个参数也是一个许可......我很高兴我的回答对两者都有效:)【参考方案2】:

试试chmod($arg['org_file'],0777);

【讨论】:

以上是关于file_put_content() 文件权限错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现创建一个文件

详解文件包含漏洞

VB 运行错误 没有权限

挂载文件时获取权限被拒绝错误

在拒绝权限的情况下,camel文件移动到错误目录

DNN 文件管理器在上传文件时显示“无权限”错误