使用PHP写入目录:这是一个权限问题?

我的PHP脚本写入一个文件,以便它可以创build一个JPG图像。

fwrite($handle, $GLOBALS['HTTP_RAW_POST_DATA']); fclose($handle); print $newfile.'.jpg'; 

我已经把这个脚本放在一个新的服务器上,但是图像永远不会被保存。 它保存的文件夹的权限是755,但它不拥有它。 最后一次,我想我通过更改目录所有者到Apache来解决这个问题,因为这是PHP运行的。 我不能再做同样的事,因为我不是根。

首先,是否有另一个修复? 其次,如果我可以像上次一样更改目录的所有者,是否可以解决问题?

感谢所有的帮助

Solutions Collecting From Web of "使用PHP写入目录:这是一个权限问题?"

  1. 将文件夹的权限更改为777( rwxrwxrwx
  2. 从PHP创建与mkdir的子目录
  3. 改变你的目录权限回到755( rwxr-xr-x )甚至更好711( rwx--x--x
  4. 从现在起将你的图像保存在现在由www-data(或Apache使用的任何用户)拥有的子目录中。

BTW。 你可以减少下面的代码:

 fopen($newfile.'.jpg','wb'); fwrite($handle, $GLOBALS['HTTP_RAW_POST_DATA']); fclose($handle); print $newfile.'.jpg'; 

至:

 file_put_contents($newfile.'.jpg', file_get_contents('php://input', FILE_BINARY), FILE_BINARY) 

如果你不是主人,那么是的,目录是755是一个问题。

要分解它,755是:

  • 用户(所有者)已经读取(4),写入(2)和执行(1)
  • 组读取(4)并执行(1)
  • 其他人已经阅读(4)并执行(1)

请注意, 只有所有者拥有755的写权限。

如果打开失败,PS fopen应该返回一个错误。

用这个:

 >chown dir_name www-data 

几个星期前我有类似的问题。 它最终成为服务器中设置的PHP安全模式。

检查出!

将error_reporting(E_ALL)放在脚本的顶部,并检查是否在尝试保存图像时打印出任何警报。