在 linux 机器上使用 PHP 上传文件
Uploading files with PHP on a linux machine
我正在尝试在无头 raspbian 机器上制作某种云应用程序。
测试在 windows8.1 上的 wamp 服务器 运行ning 上进行。 PHP 版本为 5.6
该代码在我的测试 windows 上运行良好,但是当 运行 在我的 linux 服务器上使用相同的代码时,我 运行 遇到了问题。我已将问题缩小到以下事实(linux 后面的用户)我的 PHP 代码对应该存储文件的文件夹没有写入权限。
我可以想到两种方法来解决这个问题:要么给那个 php-user 权限,要么改变 php 代码背后的用户。如果可以更改每个脚本,最后一个将非常有趣。
所以,对于我的具体问题:
1) 我在哪里可以找到我的 PHP 代码正在使用的用户?
2) 我可以更改我的 PHP 代码使用的用户,最好是在每个项目的基础上吗?
编辑:
我的脚本 运行 以 root 身份运行,如 echo get_current_user();
所示。我将所有文件的所有权更改为 root:webhosting,之前是 ftpuser:ftpgroup。但是,当设置 770
的权限时,我的访问被拒绝
编辑 2:
当使用 var_dump(posix_geteuid());
而不是 get_current_user();
时,我得到 UID 33,它匹配用户 www-data。
解决方案:
通过查看带有 var_dump(posix_geteuid();
的 EUID,我能够验证与 get_current_user();
不匹配的实际用户。使用 sudo chown -R www-data:www-data <root of site>
更改目录及其中的所有文件我设法设置了正确的权限。
我不确定具体是什么,但通常当我遇到这样的问题时,我将所有权更改为 www-data:www-data,如果需要上传文件夹,我将文件夹权限更改为 0755 和内部文件权限到 0644.
编辑
出于安全考虑,我更改了权限设置。
您是 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 {} \;
我正在尝试在无头 raspbian 机器上制作某种云应用程序。 测试在 windows8.1 上的 wamp 服务器 运行ning 上进行。 PHP 版本为 5.6
该代码在我的测试 windows 上运行良好,但是当 运行 在我的 linux 服务器上使用相同的代码时,我 运行 遇到了问题。我已将问题缩小到以下事实(linux 后面的用户)我的 PHP 代码对应该存储文件的文件夹没有写入权限。
我可以想到两种方法来解决这个问题:要么给那个 php-user 权限,要么改变 php 代码背后的用户。如果可以更改每个脚本,最后一个将非常有趣。
所以,对于我的具体问题:
1) 我在哪里可以找到我的 PHP 代码正在使用的用户?
2) 我可以更改我的 PHP 代码使用的用户,最好是在每个项目的基础上吗?
编辑:
我的脚本 运行 以 root 身份运行,如 echo get_current_user();
所示。我将所有文件的所有权更改为 root:webhosting,之前是 ftpuser:ftpgroup。但是,当设置 770
的权限时,我的访问被拒绝
编辑 2:
当使用 var_dump(posix_geteuid());
而不是 get_current_user();
时,我得到 UID 33,它匹配用户 www-data。
解决方案:
通过查看带有 var_dump(posix_geteuid();
的 EUID,我能够验证与 get_current_user();
不匹配的实际用户。使用 sudo chown -R www-data:www-data <root of site>
更改目录及其中的所有文件我设法设置了正确的权限。
我不确定具体是什么,但通常当我遇到这样的问题时,我将所有权更改为 www-data:www-data,如果需要上传文件夹,我将文件夹权限更改为 0755 和内部文件权限到 0644.
编辑
出于安全考虑,我更改了权限设置。
您是 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 {} \;