Nginx,PHP中的文件上传权限错误


File Upload Permissions error in Nginx, PHP

我正在用php运行一个本地nginx服务器,以编写一段基本上具有上传功能的代码。我需要将图像上传到文件夹tmp,然后继续工作。但我想文件夹权限有一些问题,因为php正在发回一个错误UPLOAD_ERR_CANT_WRITE

目录中的ls -l

drwxr-xr-x 2 root  root      4096 Mar 22 19:20 assets
-rw-r--r-- 1 root  root      1564 Mar 22 19:20 cropper.php
drwxr-xr-x 5 root  root      4096 Mar 22 19:20 files
drwxr-xr-x 2 root  root      4096 Mar 22 19:20 images
-rw-r--r-- 1 root  root     10018 Mar 22 19:20 index.htm
-rw-r--r-- 1 root  root      7972 Mar 22 19:20 second-page.php
drwxrwxr-x 2 arjun www-data  4096 Mar 22 19:20 tmp

我试图更改周围的权限,但一直失败。那么,我该如何摆脱困境呢?

确保php作为www数据组运行。不应该。在配置中查找"Group"。

简单的方法是

ps aux|grep php

查找php守护进程用户,并将tmp文件夹切换到该用户。

记住php通常不是由同一个用户和nginx运行的,它们是不同的进程

尽管组权限设置为www-data,但用户看起来仍然被分配给自己。如果cd到目录并运行chown -Rf www-data:www-data,它会将tmp目录的所有者设置为web服务器,然后应该允许php写入该文件夹。

=>php fpm需要写访问权限,而不是nginx。php-fpm进程以uid1000运行,而不是以www数据运行

所以你可以chgrp-R 1000 tmp

理想情况下,您将限制www数据和php fpm可以写入的目录,同样,将其限制为上传目录,例如在WordPress中。