php - 使用 PHP : Is this a permissions problem? 写入目录

标签 php linux apache file permissions

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

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

我已将此脚本放在新服务器上,但图像从未保存。它保存到的文件夹的权限是 755 但它不拥有它。上次,我想我通过将目录所有者更改为 apache 解决了这个问题,因为这是 PHP 运行的方式。我不能再做同样的事情,因为我不是 root。

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

感谢大家的帮助

最佳答案

  1. 将文件夹的权限更改为 777 (rwxrwxrwx)
  2. 从 PHP 创建子目录 mkdir
  3. 将您的目录权限改回 755 (rwxr-xr-x) 或更好的 711 (rwx--x--x)
  4. 从现在开始,将您的图像保存在子目录中,该目录现在归 www-data(或 Apache 使用的任何用户)所有。

顺便说一句。您可以减少以下代码:

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)

关于php - 使用 PHP : Is this a permissions problem? 写入目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/678388/

相关文章:

php - 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

linux - 文件系统操作(如重命名/取消链接)是否已缓存?

apache - IndexIgnore *或选项-Indexes

php - "type"是从 select 标签中选择的选项

php - 如何通过键而不是值来执行 PHP array_intersect?

php - 选择两个日期之间的数据?

linux - find + sed 未按预期工作

linux - 如何在 linux RHEL7 中阻止 udp 端口​​范围

apache - 如何在 Docker 容器中使用 Apache 并且什么都不写到磁盘(所有日志到 STDIO/STDERR)?

spring - 将tomcat重定向到本地系统中的apache