copy()函数返回"权限被拒绝"

时间:2016-01-16 20:04:45

标签: php image apache permissions

下面的代码工作得很好,但自从升级我的系统(从Mandriva 2010& KDE 4到Fedora 23& KDE 5.14)以来,很多事情已经破裂,包括这个。我设法解决了大部分其他问题,但这个具体问题仍然无法解决。

我怀疑代码本身并不是问题所在,但我会在此发布,以便您拥有所有元素:

$infile = stripslashes($infile);
$filepath = "../site/images/thumbs/$dlettr/";
$outfile = $filepath . $id . '-ori.' . $fext;
copy($infile, $outfile);
$gis = getimagesize($outfile);
$width = $gis[0];
$height = $gis[1];
$outfile2 = str_replace("-ori.$fext", '-0.jpg', $outfile);
$im = new Imagick("$outfile");
$im->setImageFormat("jpg");
$im->writeImage("$outfile2");
unlink($outfile);

原始$ infile是通过表单传递的图像的URL。 $ dlettr是在代码中较早确定的字母。 $ fext是文件扩展名,也是之前确定的。 $ id是与运行代码的页面关联的数字,因此是文件的唯一标识符。

代码的作用只是从给定的URL下载图像,将其保存在适当的路径中,并将其与正在处理的当前页面相关联。

自升级以来,当我尝试运行代码时,无论URL如何,我现在都会得到以下信息:

  

警告:复制(../ site / images / thumbs / G / 27879-ori.jpg):无法打开流:1055行/var/www/html/site/index.php中的权限被拒绝

     

警告:getimagesize(../ site / images / thumbs / G / 27879-ori.jpg):无法打开流:/var/www/html/site/index.php上没有这样的文件或目录1057

     

致命错误:未捕获的异常' ImagickException'消息'无法打开图像`../site/images/thumbs/G/27879-ori.jpg' ;:没有这样的文件或目录@ error / blob.c / OpenBlob / 2701'在/var/www/html/site/index.php:1064堆栈跟踪:#0 /var/www/html/site/index.php(1064):Imagick-> __ construct(' ../ site /images...')在第1064行的/var/www/html/site/index.php中抛出#1 {main}

是的,已安装ImageMagick插件; - )

起初我认为这可能是一个SELinux问题,因为我的许多其他问题都与此有关,但我没有在审核日志中看到任何错误,所以不是这样。

所以我想到了一个权限问题,因为" Permission denied"所以我把它们调整为死亡但无济于事。目前它们对于文件夹和文件都设置为777,而STILL它不会保存图片!

至于所有权,文件和文件夹由user:user拥有,apache是​​我用户组的成员(因此它应该能够访问文件夹并保存图像)。

我应该指定的一个小细节,我认为可能是问题的核心(虽然它在我之前的系统中运行良好)是我在/ var分区上的空间有限,并且因为我希望图像库能够我实际上将图片存储在一个不同的更大的分区中,并将文件夹符号链接到/ var / www / html / site:

$ ls -l /var/www/html/site/
lrwxrwxrwx. 1 user user     17 Oct  9 04:51 images -> /mnt/site/images

我试图谷歌我得到的错误,但我只看到chmod解决的问题,显然这里没有做任何事情......同样,stackoverflow上有一些类似的问题,但没有这真的符合我的确切情况。

旁注:我的Apache用户名为' apache',Fedora 23中显然没有php用户(该服务随apache一起启动,所以我猜apache也是php用户.. 。)

0 个答案:

没有答案