我尝试使用以下代码从PHP创建文件:
$config_file = fopen( '/home/the-user/domains/the-domain/public_html/the-folder/the-file.php', 'w');
此文件将在其中的文件夹由DirectAdmin创建。所以PHP通常无法访问此文件夹。因此,我将apache
用户添加到DirectAdmin使用的用户组中。
我使用以下命令更改新创建的文件夹的权限:
exec('sudo chmod 775 /home/the-user/domains/the-domain/public_html/the-folder/');
即使完成了所有这些操作,我仍然会收到failed to open stream: Permission denied
错误。
我查看了许多不同的帖子,我想我几乎没有成功地尝试过所有内容。
谁能告诉我我做错了什么?
答案 0 :(得分:0)
错误信息很明显PHP没有对文件的写访问权。既然你没有提到你正在运行的操作系统和网络服务器,我必须做出一些假设,因为这显然是Unix的命令将是相同的,但你使用的网络服务器将决定哪个 runuser 需要访问权限(以下示例将针对ubuntu上的apache)
因此请确保文件可由www-data
用户/组写入。
exec('sudo chown www-data:www-data /home/the-user/domains/the-domain/public_html/the-folder/');
或通过命令行
chown www-data:www-data /home/the-user/domains/the-domain/public_html/the-folder/
这将更改该特定文件的用户/组。
要检查您的网络服务器正在运行的用户,您可以使用以下命令输出所有进程及其runuser的列表
ps auxf | more
要记住的另一件事是安全性偏离chmod 755
,我不建议将此用于PHP文件作为一般经验法则我遵循这一点。
文件通常为644,文件夹为755.这是正常操作。
某些要标记为只读的文件通常设置为444或在某些情况下为400。