我正在用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中。