file_put_content()文件权限错误

时间:2013-11-18 10:12:10

标签: php file-upload file-permissions

在我的代码中,我发送了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,但是没有用,所以我觉得我错过了什么。请帮助,谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

<强>更新

同样适合您致电->save()

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

举例说明:

777  = 1100001001 (01411)
0777 =  111111111

答案 1 :(得分:2)

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