Jes*_*ers 2 php apache ubuntu fopen
我正在lubuntu上运行一个apache服务器,我正在尝试使用php编写一个用户可以下载的文本文件.我更改了权限:
sudo chmod 775 /var/www -R
Run Code Online (Sandbox Code Playgroud)
但是当我执行脚本时仍然会出错:
警告:fopen(3):无法打开流:第217行/var/www/myPage.php中的权限被拒绝无法打开文件!
这是php代码:
$filename = $liste[0][0];
$fh = fopen($filename, "x+") or die("Could not open file!");
fwrite($fh, "foo") or die("Could not write to file");
fclose($fh);
Run Code Online (Sandbox Code Playgroud)
我需要更改其他权限吗?或者还有另一种方法可以做我想做的事情吗?谢谢
写入文件夹需要Apache用户具有该文件夹的写入,读取和执行权限.
因此,首先尝试识别Apache用户的名称(通常是www-data).
然后检查该用户是所有者还是要写入文件的文件夹组.
为该用户提供该文件夹的写入,读取和执行(7)权限.给不需要在同一文件夹上写入读取和执行权限(5)的其他人.
(推荐)为www-data用户提供对文件的写入和读取(6)权限.其他人只需要读权限(4).
如果www-data既不是文件的所有者也不是文件的组,那么您应该更改其中任何一个.执行此操作后,如果您使用除www-data以外的用户(而不是root用户)访问服务器(如"webeditor"),您可能会发现自己无法访问该Web文件夹,并且该用户既不是所有者也不是组中的用户.
我建议:
将所有者和组设置为Apache用户/组.
chown -R www-data:www-data /var/www
Run Code Online (Sandbox Code Playgroud)将webeditor用户(或用于连接到ssh或ftp上的服务器的用户)添加到www-data组.
usermod -a -G www-data webeditor
Run Code Online (Sandbox Code Playgroud)为文件夹提供对所有者的写入,读取和执行权限.避免对其他人的写作权限.
find /var/www -type d -exec chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)文件不需要执行权限.对于www-data用户,只需要读写,其余的只需要读取权限,因此644对我们的文件来说已经足够了.
find /var/www -type f -exec chmod 644 {} \;
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |