我正在尝试在无头的raspbian机器上制作某种云应用程序。 测试发生在运行在windows8.1上的wamp-server上。 PHP版本是5.6
代码在我的测试窗口上工作正常,但是在我的linux服务器上运行相同的代码时遇到了问题。我已经把这个问题缩小到这样一个事实:(我的PHP用户背后)我的PHP代码对它应该存储文件的文件夹没有写权限。
我可以想出两种方法来解决这个问题:要么给予php-user权限,要么改变php代码背后的用户。如果可以更改每个脚本,那么最后一个将非常有趣。
所以,对于我的具体问题:
1)我在哪里可以找到我的PHP代码使用的用户?
2)我可以更改我的PHP代码使用的用户,最好是按项目更改吗?
编辑:
我的脚本以root身份运行,如echo get_current_user();
所示。我将所有文件的所有权更改为root:webhosting,之前是ftpuser:ftpgroup。但是,当设置770
的权限时,我会被拒绝访问
EDIT2:
使用var_dump(posix_geteuid());
代替get_current_user();
时,我会获得与用户www-data匹配的UID 33。
解决方案:
通过var_dump(posix_geteuid();
查看EUID,我能够验证与get_current_user();
不匹配的实际用户。使用sudo chown -R www-data:www-data <root of site>
更改directroy及其中的所有文件我设法设置了正确的权限。
答案 0 :(得分:1)
我不确定具体是什么,但通常当我遇到类似问题时我将所有权更改为www-data:www-data,如果需要上传文件夹,我将文件夹权限更改为0755,将文件内部权限更改为0644
修改强>
出于安全考虑,我更改了权限设置。
答案 1 :(得分:1)
您的PHP / Apache用户可能是www-data
。你可能想要运行这样的东西。
sudo find path/to/project/ -exec chown www-data:root {} \;
文件权限也可能是个问题。如果是这样,运行这样的东西。
sudo find path/to/project/ -type d -exec chmod 775 {} \;
sudo find path/to/project/ -type f -exec chmod 664 {} \;